我的地址是:西一街西街123号#910 我想要实现的是提取北,南,东,西,东北,西北,东南和西南的字样。
这就是我所做的:
$address = '123 West 1st Street South West #910';
$array = array('north','south','east','west','north east','north west','south east', 'south west');
foreach ($array as $val) {
if (preg_match("/$val/i", $address, $match, PREG_OFFSET_CAPTURE)) {
//do your stuff here
}
}
使用上面的代码,我想得到整个单词“south west”的偏移量加上名称本身,但是通过数组我得到了最后一个在地址字段的西边。
我们将不胜感激。谢谢!
答案 0 :(得分:0)
不要试图单独匹配每个,但让正则表达式引擎弄明白。它会先尝试让你获得最长的匹配,按照你提供的顺序尝试各种可能性。
(?:(?:north|south)(?:[ ](?:east|west))?|east|west)
在这里,您可以获得所有可能的案例。