次のコードがあります
$str = "keyword keyword 'keyword 1 and keyword 2' another 'one more'".'"another keyword" yes,one,two';
preg_match_all('/"[^"]+"|[^"\' ,]+|\'[^\']+\'/', $str, $matches);
echo "<pre>"; print_r($matches); echo "</pre>";
文字列からキーワードを抽出し、それらを一重引用符または二重引用符で囲んで保持したい場合、上記のコードは問題なく動作しますが、引用符を含む値が返されます。str_replace などを使用してこれらを削除できることはわかっていますが、 preg_match_all 関数を使用してこれを解決する方法を本当に探しています。
出力:
Array
(
[0] => Array
(
[0] => keyword
[1] => keyword
[2] => 'keyword 1 and keyword 2'
[3] => another
[4] => 'one more'
[5] => "another keyword"
[6] => yes
[7] => one
[8] => two
)
)
また、私の正規表現は少しずさんだと思うので、より良い提案があれば良いでしょう:)
任意の提案/ヘルプをいただければ幸いです。