summaryrefslogtreecommitdiffstats
path: root/vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php')
-rw-r--r--vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php18
1 files changed, 16 insertions, 2 deletions
diff --git a/vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php b/vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php
index 0590c47b1..5821dd40c 100644
--- a/vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php
+++ b/vendor/fguillot/picofeed/lib/PicoFeed/Encoding/Encoding.php
@@ -15,7 +15,21 @@ class Encoding
return $input;
}
- // convert input to utf-8; ignore malformed characters
- return iconv($encoding, 'UTF-8//IGNORE', $input);
+ // suppress all notices since it isn't possible to silence only the
+ // notice "Wrong charset, conversion from $in_encoding to $out_encoding is not allowed"
+ set_error_handler(function() {}, E_NOTICE);
+
+ // convert input to utf-8 and strip invalid characters
+ $value = iconv($encoding, 'UTF-8//IGNORE', $input);
+
+ // stop silencing of notices
+ restore_error_handler();
+
+ // return input if something went wrong, maybe it's usable anyway
+ if ($value === false) {
+ return $input;
+ }
+
+ return $value;
}
}