function hotpot_xml_tree::encode_cdata in Quiz 6.6
Same name and namespace in other branches
- 6.5 includes/moodle/question/format/hotpot/format.php \hotpot_xml_tree::encode_cdata()
1 call to hotpot_xml_tree::encode_cdata()
- hotpot_xml_tree::hotpot_xml_tree in includes/
moodle/ question/ format/ hotpot/ format.php
File
- includes/
moodle/ question/ format/ hotpot/ format.php, line 591
Class
Code
function encode_cdata(&$str, $tag) {
// conversion tables
static $HTML_ENTITIES = array(
''' => "'",
'"' => '"',
'<' => '<',
'>' => '>',
'&' => '&',
);
static $ILLEGAL_STRINGS = array(
"\r" => '',
"\n" => '<br />',
']]>' => ']]>',
);
// extract the $tag from the $str(ing), if possible
$pattern = '|(^.*<' . $tag . '[^>]*)(>.*<)(/' . $tag . '>.*$)|is';
if (preg_match($pattern, $str, $matches)) {
// encode problematic CDATA chars and strings
$matches[2] = strtr($matches[2], $ILLEGAL_STRINGS);
// if there are any ampersands in "open text"
// surround them by CDATA start and end markers
// (and convert HTML entities to plain text)
$search = '/>([^<]*&[^<]*)</e';
$replace = '"><![CDATA[".strtr("$1", $HTML_ENTITIES)."]]><"';
$matches[2] = preg_replace($search, $replace, $matches[2]);
$str = $matches[1] . $matches[2] . $matches[3];
}
}