"
または'
を区切り文字として使用して、php を使用して文字列を配列コンポーネントに分割しようとしています。一番外側の文字列で分割したいだけです。以下に 4 つの例と、それぞれの望ましい結果を示します。
$pattern = "?????";
$str = "the cat 'sat on' the mat";
$res = preg_split($pattern, $str);
print_r($res);
/*output:
Array
(
[0] => the cat
[1] => 'sat on'
[2] => the mat
)*/
$str = "the cat \"sat on\" the mat";
$res = preg_split($pattern, $str);
print_r($res);
/*output:
Array
(
[0] => the cat
[1] => "sat on"
[2] => the mat
)*/
$str = "the \"cat 'sat' on\" the mat";
$res = preg_split($pattern, $str);
print_r($res);
/*output:
Array
(
[0] => the
[1] => "cat 'sat' on"
[2] => the mat
)*/
$str = "the 'cat \"sat\" on' the mat 'when \"it\" was' seventeen";
$res = preg_split($pattern, $str);
print_r($res);
/*output:
Array
(
[0] => the
[1] => 'cat "sat" on'
[2] => the mat
[3] => 'when "it" was'
[4] => seventeen
)*/
ご覧のとおり、最も外側の引用で分割したいだけで、引用内の引用は無視したいのです。
私が思いついた最も近いの$pattern
は
$pattern = "/((?P<quot>['\"])[^(?P=quot)]*?(?P=quot))/";
しかし、明らかにこれは機能していません。