首页 文章

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

提问于
浏览
11

如何删除 (//<![CDATA[ , //]]> )块; script 元素内的标签 .

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

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

我会用什么正则表达式?

7 回答

  • 0

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

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

    CodePad .

  • 1

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

    用什么都替换文本的那些部分:

    $string = str_replace("//<![CDATA[","",$string);
    $string = str_replace("//]]>","",$string);
    
  • 0

    如果你必须...

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

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

  • 0

    你也试试,

    $s=str_replace(array("//<![CDATA[","//]]>"),"",$s);
    
  • 6

    使用 str_replace() 而不是 preg_replace() 它更容易

    $var = str_replace('<![CDATA[', '', $var);
    $var = str_replace(']]','',$var);
    echo $var;
    
  • 11

    我使用这样删除 <![CDATA[]] 但单行现在为我工作,不知道是否为多行字符串 .

    preg_match_all('/CDATA\[(.*?)\]/', $your_string_before_this, $datas); 
    $string_result_after_this = $datas[1][0];
    
  • 17
    $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));
    }
    

相关问题