Как удалить `//`? - PullRequest
       44

Как удалить `//`?

11 голосов
/ 27 ноября 2011

Как убрать блоки (//<![CDATA[ , //]]>); теги внутри элемента script.

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

Похоже, это можно сделать с помощью preg_replace(), но я не нашел решение, которое работает для меня.

Какое регулярное выражение я бы использовал?

Ответы [ 7 ]

17 голосов
/ 27 ноября 2011

Вам не нужно регулярное выражение для статической строки.

Заменить эти части текста ничем:

$string = str_replace("//<![CDATA[","",$string);
$string = str_replace("//]]>","",$string);
12 голосов
/ 27 ноября 2011

Следующее регулярное выражение сделает это ...

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

CodePad .

6 голосов
/ 27 ноября 2011

Если вам необходимо ...

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

Это приведет к удалению всей строки, содержащей каждый тег, без искажения отступа в прилагаемом коде.

1 голос
/ 08 ноября 2013

Вы также можете попробовать,

$s=str_replace(array("//<![CDATA[","//]]>"),"",$s);
0 голосов
/ 12 июля 2017
$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));
}
0 голосов
/ 30 декабря 2016

Я использую, как это, чтобы удалить <![CDATA[]], но в одной строке теперь работает для меня, не знаю, если для строки из нескольких строк.

preg_match_all('/CDATA\[(.*?)\]/', $your_string_before_this, $datas); 
$string_result_after_this = $datas[1][0];
0 голосов
/ 04 июля 2013

используйте str_replace() вместо preg_replace() намного проще

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