summaryrefslogtreecommitdiff
path: root/classes/feedparser.php
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2016-09-05 15:02:31 +0300
committerAndrew Dolgov <[email protected]>2016-09-05 15:02:31 +0300
commitcde827220532a3e8f32fb30ac670deb0e91f9dad (patch)
tree55e21ecf43e4ddcb789188d11d4ed559b67006ae /classes/feedparser.php
parent733b257d31909624e1e8d28b863b6323b2108dba (diff)
parser: only try to convert encoding if mbstring actually supports it
Diffstat (limited to 'classes/feedparser.php')
-rw-r--r--classes/feedparser.php6
1 files changed, 5 insertions, 1 deletions
diff --git a/classes/feedparser.php b/classes/feedparser.php
index 9247bf450..3296381ed 100644
--- a/classes/feedparser.php
+++ b/classes/feedparser.php
@@ -15,7 +15,11 @@ class FeedParser {
function normalize_encoding($data) {
if (preg_match('/^(<\?xml[\t\n\r ].*?encoding[\t\n\r ]*=[\t\n\r ]*["\'])(.+?)(["\'].*?\?>)/s', $data, $matches) === 1) {
- $data = mb_convert_encoding($data, 'UTF-8', $matches[2]);
+
+ $encoding = strtolower($matches[2]);
+
+ if (in_array($encoding, mb_list_encodings()))
+ $data = mb_convert_encoding($data, 'UTF-8', $encoding);
$data = preg_replace('/^<\?xml[\t\n\r ].*?\?>/s', $matches[1] . "UTF-8" . $matches[3] , $data);
}