首先,我知道我可以通过爆炸获得相同的结果,只是想知道为什么它不能在PHP中工作
preg_split('/(.+,)+(.+)/im', 'New York, NY, United States');
返回
array (
0 => '',
1 => '',
)
为什么呢?它应该返回:['New York, NY, ', 'United States']
对吧?
答案 0 :(得分:1)
您实际上正在根据自己的需要进行匹配,而不是根据您要分割的内容进行匹配:
preg_match('/(.*,)+ (.*)/', $subject, $result);
会在$result
注意:我添加了一个空格并删除了多行修饰符,在您的情况下不需要。
如果您想使用preg split,则需要使用否定前瞻来获取最后一个,
:
preg_split('/(,)(?!.*,)/i', 'New York, NY, United States');
答案 1 :(得分:1)
使用preg_split可以:
preg_split("/,\s/", 'New York, NY, United States');
此功能需要分隔符的模式。
答案 2 :(得分:0)
为了获得数组:['New York, NY, ', 'United States']
,删除第二个量词并改为使用preg_match:
preg_match('/^(.+,)(.+?)$/im', 'New York, NY, United States', $match);