从json文件中删除虚假评论

时间:2013-07-21 21:09:20

标签: php regex

因为json不支持评论我需要自己的功能来清理我的评论 我的评论是css风格,像这样

/*comment*/

我尝试了以下

    $json = preg_replace("/(\/\*.?\*\/)/", "", $json);

但没有运气。 感谢的

4 个答案:

答案 0 :(得分:4)

echo preg_replace("#/\*.*?\*/#s", "", $json);

值得注意的变化:

  • 我使用#作为模式分隔符。通过这样做,我不需要 向前冲斜,使正则表达式更漂亮。
  • 我添加了s标记,这使 . 也匹配换行符。

请注意,这会破坏json字符串中的注释。一个示例json对象将被破坏

{"codeSample": " /*******THIS WILL GET STRIPPED OUT******/"}

答案 1 :(得分:2)

使用以下内容:

$json = preg_replace('!/\*.*?\*/!s', '', $json); // remove comments
$json = preg_replace('/\n\s*\n/', "\n", $json); // remove empty lines that can create errors

这将删除注释,多行注释和空行

编辑:正如一些人在评论中说的那样,你可以使用:

 $json = preg_replace('/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/', '', $json);

仅删除字符串中未找到的评论。

答案 2 :(得分:2)

$string = "some text /*comment goes here*/ some text again /*some comment again*/";
$string = preg_replace( '/\s*(?!<\")\/\*[^\*]+\*\/(?!\")\s*/' , '' , $string );
echo $string; // some textsome text again

答案 3 :(得分:0)

用于删除单行和多行注释的完整php代码。

$json = preg_replace('!/\*.*?\*/!s', '', $json); //Strip multi-line comments: '/* comment */'
$json = preg_replace('!//.*!', '', $json);       //Strip single-line comments: '// comment'
$json = preg_replace('/\n\s*\n/', "\n", $json);  //Remove empty-lines (as clean up for above)

您可以在此处测试代码的网站:https://www.phpliveregex.com

To test the first code line fill in like this picture: