summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--system/helpers/xml_helper.php24
1 files changed, 16 insertions, 8 deletions
diff --git a/system/helpers/xml_helper.php b/system/helpers/xml_helper.php
index 712f6777e..09b7aee49 100644
--- a/system/helpers/xml_helper.php
+++ b/system/helpers/xml_helper.php
@@ -36,25 +36,33 @@
*/
if ( ! function_exists('xml_convert'))
{
- function xml_convert($str)
+ function xml_convert($str, $protect_all = FALSE)
{
$temp = '__TEMP_AMPERSANDS__';
// Replace entities to temporary markers so that
- // ampersands won't get messed up
+ // ampersands won't get messed up
$str = preg_replace("/&#(\d+);/", "$temp\\1;", $str);
- $str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
+
+ if ($protect_all === TRUE)
+ {
+ $str = preg_replace("/&(\w+);/", "$temp\\1;", $str);
+ }
$str = str_replace(array("&","<",">","\"", "'", "-"),
- array("&amp;", "&lt;", "&gt;", "&quot;", "&#39;", "&#45;"),
- $str);
+ array("&amp;", "&lt;", "&gt;", "&quot;", "&apos;", "&#45;"),
+ $str);
// Decode the temp markers back to entities
$str = preg_replace("/$temp(\d+);/","&#\\1;",$str);
- $str = preg_replace("/$temp(\w+);/","&\\1;", $str);
-
+
+ if ($protect_all === TRUE)
+ {
+ $str = preg_replace("/$temp(\w+);/","&\\1;", $str);
+ }
+
return $str;
- }
+ }
}