2013-07-21 37 views
0

不到风度的支持意见,我需要我自己的函数来清洗我的意见 我的意见是css样式,这样删除从JSON文件伪造注释由于JSON

/*comment*/ 

我tryed以下

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

但没有运气。 感谢的

+0

你的''?''占位符只匹配一个任意字符,或者没有字符。 – mario

+1

这是一个非常高的正则表达式的顺序,因为你需要处理像''这是一个字符串/ *这不是一个评论* /'''/ *'和'* /'之间的事情不应该除去。 –

+0

[正则表达式删除CSS评论]的可能重复(http://stackoverflow.com/questions/3984380/regular-expression-to-remove-css-comments) – mario

回答

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); 

只删除在字符串中找不到的注释。

+0

伟大的,正是我想要做的,谢谢 –

+0

@dj_boy高兴帮助队友:) –

+0

@YotamOmer:嵌入字符串中的评论将被剥夺用这种方法。 – siride

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 
4
echo preg_replace("#/\*.*?\*/#s", "", $json); 

值得注意的变化:

  • 我用#作为图案分隔符。通过这样做,我不需要 越狱正斜杠,使正则表达式更漂亮阅读。
  • 我添加了s标志,这使得.也匹配换行符。

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

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