Как удалить `// <! ]>`?

Как удалить блоки (//<![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)); }