aboutsummaryrefslogtreecommitdiff
path: root/lib/lib_rss.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/lib_rss.php')
-rw-r--r--lib/lib_rss.php18
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));
}
}
}