Php 将字符串智能拆分为数组

Php 将字符串智能拆分为数组,php,regex,arrays,string,preg-split,Php,Regex,Arrays,String,Preg Split,此代码将字符串拆分为包含测试和字符串的数组: $str = 'test string'; $arr = preg_split('/\s+/', $str); 但我也希望在拆分时检测引号并忽略引号之间的文本,例如: $str = 'test "Two words"'; 这还应该返回一个包含两个元素的数组,test和two words 如有可能,另一种形式: $str = 'test=Two Words'; 因此,如果等号出现在任何空格之前,则字符串应按=拆分,否则应应用上面的其他规则 那么如

此代码将字符串拆分为包含测试和字符串的数组:

$str = 'test string';
$arr = preg_split('/\s+/', $str);
但我也希望在拆分时检测引号并忽略引号之间的文本,例如:

$str = 'test "Two words"';
这还应该返回一个包含两个元素的数组,
test
two words

如有可能,另一种形式:

$str = 'test=Two Words';
因此,如果等号出现在任何空格之前,则字符串应按
=
拆分,否则应应用上面的其他规则

那么如何使用preg_split实现这一点呢?

试试:

输出

数组
(
[0]=>测试
[1] =>字符串
)
排列
(
[0]=>测试
[1] =>两个字
)
排列
(
[0]=>测试
[1] =>两个字
)
您可以使用类似于
preg_match
的方法来检查空格前是否存在等号,然后确定要使用的分隔符


但是只能在PHP>=5.3中使用。

我确信这可以用正则表达式来完成,但是我们可以用引号、空格和空格来拆分字符串吗

给定字符串
'I am a string'和嵌入的“string”
,您可以首先用引号分割,给您
['I am a string','with a embedded','string']
,然后遍历数组中的其他元素并按空格分割,结果是
['I','am','a','string','with a embedded','string']

您可以自己编写实现这一点的确切代码。如果没有,请告诉我,我会帮助你

在上一个示例中,只需按等号拆分:

$str = 'test=Two Words';
print explode('=', $str);
$str = 'test=Two Words';
print explode('=', $str);