Как удалить блоки (//<![CDATA[ , //]]>
); теги внутри элемента script
.
<script type="text/javascript"> //<![CDATA[ var l=new Array(); .......................... .......................... //]]> </script>
Похоже, это можно сделать с помощью preg_replace()
но havent нашел решение, которое работает для меня.
Какое регулярное выражение я бы использовал?
Следующее regex сделает это …
$removed = preg_replace('/^\s*\/\/<!\[CDATA\[([\s\S]*)\/\/\]\]>\s*\z/', '$1', $scriptText);
CodePad .
Вам не нужно регулярное выражение для статической строки.
Замените эти части текстов ничем:
$string = str_replace("//<![CDATA[","",$string); $string = str_replace("//]]>","",$string);
Если вы должны…
$s = preg_replace('~//<!\[CDATA\[\s*|\s*//\]\]>~', '', $s);
Это приведет к удалению всей строки, содержащей каждый тег, без испорчения вложенного кода.
Вы также можете попробовать,
$s=str_replace(array("//<![CDATA[","//]]>"),"",$s);
используйте str_replace()
вместо preg_replace()
намного проще
$var = str_replace('<![CDATA[', '', $var); $var = str_replace(']]','',$var); echo $var;
Я использую это, чтобы удалить <![CDATA[]]
но в одной строке теперь работает для меня, не знаю, если для нескольких строк.
preg_match_all('/CDATA\[(.*?)\]/', $your_string_before_this, $datas); $string_result_after_this = $datas[1][0];
$nodeText = '<![CDATA[some text]]>'; $text = removeCdataFormat($nodeText); public function removeCdataFormat($nodeText) { $regex_replace = array('',''); $regex_patterns = array( '/<!\[CDATA\[/', '/\]\]>/' ); return trim(preg_replace($regex_patterns, $regex_replace, $nodeText)); }