1

json はコメントをサポートしていないため、コメントを消去するには独自の関数が必要です。私のコメントは、次のような CSS スタイルです。

/*comment*/

私は次のことを試しました

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

しかし運がない。ありがとう

4

4 に答える 4

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

主な変更点:

  • #パターン区切りとして使用しました。これにより、スラッシュをエスケープする必要がなくなり、正規表現が読みやすくなります。
  • 改行文字sにも一致させるフラグを追加しました。.

これにより、json 文字列内のコメントが破棄されることに注意してください。破壊される json オブジェクトの例

{"codeSample": " /*******THIS WILL GET STRIPPED OUT******/"}
于 2013-07-21T21:14:33.417 に答える
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);

文字列内にないコメントのみを削除します。

于 2013-07-21T21:12:16.257 に答える
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
于 2013-07-21T21:12:30.557 に答える