diff options
Diffstat (limited to 'lib/lib_rss.php')
| -rw-r--r-- | lib/lib_rss.php | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/lib/lib_rss.php b/lib/lib_rss.php index 137c7f2d5..357c02e82 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -49,13 +49,19 @@ spl_autoload_register('classAutoloader'); function idn_to_puny($url) { if (function_exists('idn_to_ascii')) { - $parts = parse_url($url); - if (!empty($parts['host'])) { - $idn = $parts['host']; - $puny = idn_to_ascii($idn, 0, INTL_IDNA_VARIANT_UTS46); + $idn = parse_url($url, PHP_URL_HOST); + if ($idn != '') { + // https://wiki.php.net/rfc/deprecate-and-remove-intl_idna_variant_2003 + if (defined('INTL_IDNA_VARIANT_UTS46')) { + $puny = idn_to_ascii($idn, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46); + } elseif (defined('INTL_IDNA_VARIANT_2003')) { + $puny = idn_to_ascii($idn, IDNA_DEFAULT, INTL_IDNA_VARIANT_2003); + } else { + $puny = idn_to_ascii($idn); + } $pos = strpos($url, $idn); - if ($pos !== false) { - return substr_replace($url, $puny, $pos, strlen($idn)); + if ($puny != '' && $pos !== false) { + $url = substr_replace($url, $puny, $pos, strlen($idn)); } } } |
