私は削除する必要があります" - 無効なjsonを作成する、どうすればphp正規表現でやりますか?php regex "-s from string
"名前":四auの "ステーキ """、このような状況の削除で
"4つの" -s」のauは、これは、2つの引用符に一致するようにPHPのコードである
私は削除する必要があります" - 無効なjsonを作成する、どうすればphp正規表現でやりますか?php regex "-s from string
"名前":四auの "ステーキ """、このような状況の削除で
"4つの" -s」のauは、これは、2つの引用符に一致するようにPHPのコードである
を引用します引用内:
$re = "/^\"name\": \"[^\"]*?(\")*?[^\"]*?(\")*?[^\"]*?\"$/";
$str = "\"Steak \"au Four\" \"";
preg_match($re, $str, $matches);
試合のない使用することはありません置き換えるために正規表現を使って引用符を付けるのは、あなたが終わる唯一のことは引用自体です。
実は、それはあなたが(あなたがdocumentationで見ることができる)preg_match()
に述べパラメータとしてPREG_OFFSET_CAPTURE
を渡すことで、インデックスと一緒にそれらを得ることができるよう、非常に真実ではありません。
さらに、二重引用符が二つ以上あるの場合はどうでしょうかその場合、正規表現はより複雑になります。その後、文字列を配列str_split()
に変換するので、インデックスで要素を設定解除することができます。最後に配列をjoin()
またはimplode()
で再び文字列に変換します。
私は全体の価値をつかんで、引用符をstr_replace()
に置き換える方が簡単だと思います。あなたのケースでは、このような何かを行うことができます。
$jsonLine = "\"name\":\"Steak \"au Four\" \"";
$jsonLine = trim($jsonLine);
$pattern = '/^(?P<name>"name"\s*:\s*)(?P<value>".*".*")$/';
if (preg_match($pattern, $jsonLine, $matches) === false) {
exit('Pattern not matched');
}
$name = $matches['name'];
$value = trim(str_replace('"', '', $matches['value']));
$newJsonLine = "$name\"$value\"";
echo $newJsonLine;
あなたがデモhereを見ることができます。
私はあなたの質問をフォーマットして、より読みやすくしました。すでに試したコードがありますか?あなたの質問の下にある編集リンクを使ってここにも投稿してください。 – ib11