diff options
| author | 2019-11-20 20:43:16 +0100 | |
|---|---|---|
| committer | 2019-11-20 20:43:16 +0100 | |
| commit | b0ef856361a2598b1d24a251e05a0287d1426d80 (patch) | |
| tree | 6608bf1f09daf5d7757352e03370f4d93e80a4f0 /lib/lib_rss.php | |
| parent | 1ddf98c50b2e0388c76386202bd8be3442640418 (diff) | |
Old ICU: INTL_IDNA_VARIANT_2003 fallback (#2680)
* Old ICU: INTL_IDNA_VARIANT_2003 fallback
Fix https://github.com/FreshRSS/FreshRSS/issues/2676
Fix https://github.com/FreshRSS/FreshRSS/issues/2677
ICU version < 4.6: When INTL_IDNA_VARIANT_UTS46 is not available, use INTL_IDNA_VARIANT_2003
Cf. https://github.com/PrestaShop/PrestaShop/pull/11995
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)); } } } |
