preg_split
多亏了尼克,我之前的问题是关于哪个答案超级快的问题;当分隔符在引号内时,我真的很想将场景扩展到不拆分字符串。例如:
如果我有 string foo = bar AND bar=foo OR foobar="foo bar"
,我希望在每个空格或=
字符上拆分字符串,但将=
字符包含在返回的数组中(目前效果很好),但我不想拆分字符串中的任何一个分隔符都在引号。
到目前为止我有这个:
<!doctype html>
<?php
$string = 'foo = bar AND bar=foo';
$array = preg_split('/ +|(=)/', $string, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
?>
<pre>
<?php
print_r($array);
?>
</pre>
这让我:
Array
(
[0] => foo
[1] => =
[2] => bar
[3] => AND
[4] => bar
[5] => =
[6] => foo
)
但是,如果我将字符串更改为:
$string = 'foo = bar AND bar=foo OR foobar = "foo bar"';
我真的很希望数组是:
Array
(
[0] => foo
[1] => =
[2] => bar
[3] => AND
[4] => bar
[5] => =
[6] => foo
[6] => OR
[6] => foobar
[6] => =
[6] => "foo bar"
)
注意"foo bar"
没有在空间上拆分,因为它在引号中?
真的不确定如何在 RegEx 中执行此操作,或者是否有更好的方法,但非常感谢您的所有帮助!
谢谢大家!