如何删除`// <![CDATA [`和end` //]]>`?

bom*_*den 12 php regex preg-replace cdata

我怎样才能删除(//<![CDATA[ , //]]>)块; script元素内的标签.

<script type="text/javascript">
    //<![CDATA[
    var l=new Array();
    ..........................
    ..........................
    //]]>
</script>
Run Code Online (Sandbox Code Playgroud)

看起来它可以完成,preg_replace()但还没有找到适合我的解决方案.

我会用什么正则表达式?

Dim*_*mme 18

您不需要正则表达式来表示静态字符串.

用任何东西替换文本的那些部分:

$string = str_replace("//<![CDATA[","",$string);
$string = str_replace("//]]>","",$string);
Run Code Online (Sandbox Code Playgroud)


ale*_*lex 12

以下正则表达式会做到......

$removed = preg_replace('/^\s*\/\/<!\[CDATA\[([\s\S]*)\/\/\]\]>\s*\z/', 
                        '$1', 
                        $scriptText);
Run Code Online (Sandbox Code Playgroud)

CodePad.


Ala*_*ore 6

如果你必须...

$s = preg_replace('~//<!\[CDATA\[\s*|\s*//\]\]>~', '', $s);
Run Code Online (Sandbox Code Playgroud)

这将删除包含每个标记的整行,而不会弄乱所附代码的缩进.