From 86041b7e8482960700e47a734aab250ad1773ab5 Mon Sep 17 00:00:00 2001 From: stronk7 Date: Tue, 27 Mar 2007 20:31:18 +0000 Subject: [PATCH] Now XMLDBStatements support backslashed single quotes. Merged from MOODLE_18_STABLE --- lib/xmldb/classes/XMLDBObject.class.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/xmldb/classes/XMLDBObject.class.php b/lib/xmldb/classes/XMLDBObject.class.php index a365f863bc..10a90b971a 100644 --- a/lib/xmldb/classes/XMLDBObject.class.php +++ b/lib/xmldb/classes/XMLDBObject.class.php @@ -372,8 +372,9 @@ class XMLDBObject { $string = str_replace($foundconcats,array_keys($foundconcats),$string); } - /// Extract all the quoted elements from the string - preg_match_all("/('.*?')/is", $string, $matches); + /// Extract all the quoted elements from the string (skipping + /// backslashed quotes that are part of the content. + preg_match_all("/('.*?[^\\\]')/is", $string, $matches); foreach (array_unique($matches[0]) as $key=>$value) { $foundquotes['<%'.$key.'%>'] = $value; } @@ -397,7 +398,8 @@ class XMLDBObject { if (!empty($foundconcats)) { $element = str_replace(array_keys($foundconcats), $foundconcats, $element); } - $arr[$key] = $element; + /// Delete any backslash used for quotes. XMLDB stuff will add them before insert + $arr[$key] = str_replace("\\'", "'", $element); } } -- 2.39.5