我需要拆分地址:Main Str. 202-52 I street=Main Str. house No.=202 room No.=52 --我试着使用这个:
$data['address'] = "Main Str. 202-52";
$data['street'] = explode(" ", $data['address']);
$data['building'] = explode("-", $data['street'][0]);当街道上有一个词的时候它就起作用了。如何分割地址街道名称有几个词。我试过$data['street'] = preg_split('/[0-9]/', $data['address']);,但只知道街名.
发布于 2017-02-10 22:49:37
您可以使用一个正则表达式,如
/^(.*)\s(\d+)\W+(\d+)$/如果您需要在第一组中使用最后一个空格,第二组中需要下一个数字,第三组中需要最后一个数字。\W+与word字符以外的1+字符匹配,所以它匹配-等等。如果您在那里有一个-,只需使用连字符而不是\W+。
见regex演示和PHP演示
$s = "Main Str. 202-52";
if (preg_match('~^(.*)\s(\d+)\W+(\d+)$~', $s, $m)) {
echo $m[1] . "\n"; // Main Str.
echo $m[2] . "\n"; // 202
echo $m[3]; // 52
}模式细节:
^ -字符串的开始(.*) -第1组捕获除行中断字符以外的任何0+字符,直到最后.\s -空格,后面跟着.(\d+) -第2组:一个或多个数字\W+ - 1+非字字符(\d+) -第3组:一个或多个数字$ -字符串的末端。另外,请注意,如果最后一部分可以是可选的,则使用可选捕获组(即\W+(\d+)、(?:\W+(\d+))?)包装该捕获组。
https://stackoverflow.com/questions/42169873
复制相似问题