继上次我关于preg_split
的问题得到了快速回答,感谢nick;我真的想将场景扩展到当分隔符在引号内时不拆分字符串。例如:
如果我有字符串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"
没有按空格拆分。
真的不确定如何在正则表达式中实现此操作,或者是否有更好的方法,但是非常感谢您的所有帮助!
提前感谢大家!