summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDerek Jones <derek.jones@ellislab.com>2010-03-05 17:32:03 +0100
committerDerek Jones <derek.jones@ellislab.com>2010-03-05 17:32:03 +0100
commit85b2bb7df5e5308b5283e24a3d83aadd1fa9d4de (patch)
tree9bfd06b1698c682473f4c3c5503578d722ed22e4
parent2b7de06bd0e2184c9bffc971490f7f640c736a6a (diff)
improved xml_convert() of XML helper
-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;
- }
+ }
}