Call idn_to_ascii with INTL_IDNA_VARIANT_UTS46

Under PHP 7.2, calling `idn_to_ascii($idn)` results in a deprecation warning: 'INTL_IDNA_VARIANT_2003 is deprecated'
See https://secure.php.net/manual/en/function.idn-to-ascii.php 

Therefore, if possible, `idn_to_ascii($idn, 0, INTL_IDNA_VARIANT_UTS46)` should be used instead. `INTL_IDNA_VARIANT_UTS46` was introduced in PHP 5.4, so on versions before that, `idn_to_ascii($idn)` must still be used.

Fixed #1699
This commit is contained in:
Craig Andrews
2017-12-01 18:42:15 -05:00
committed by GitHub
parent ceda55c75b
commit aea78f4d99

View File

@@ -62,6 +62,12 @@ function idn_to_puny($url) {
$parts = parse_url($url);
if (!empty($parts['host'])) {
$idn = $parts['host'];
// INTL_IDNA_VARIANT_UTS46 is defined starting in PHP 5.4
if (defined('INTL_IDNA_VARIANT_UTS46')) {
$puny = idn_to_ascii($idn, 0, INTL_IDNA_VARIANT_UTS46);
} else {
$puny = idn_to_ascii($idn);
}
$puny = idn_to_ascii($idn);
$pos = strpos($url, $idn);
if ($pos !== false) {