Php 分开地址街道名称门牌号和房间号
我需要拆分地址:Php 分开地址街道名称门牌号和房间号,php,regex,preg-match,explode,Php,Regex,Preg Match,Explode,我需要拆分地址:主街道202-52到 street=Main Str. 门牌号=202 房间号=52 我试着用这个: $data['address'] = "Main Str. 202-52"; $data['street'] = explode(" ", $data['address']); $data['building'] = explode("-", $data['street'][0]); 当街道命名一个单词时,它就起作用了。如何拆分地址,其中街道名称有多个单词。 我尝试了$data
主街道202-52
到
street=Main Str.
门牌号=202
房间号=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'])代码>但只获取街道名称…您可以使用以下正则表达式
/^(.*)\s(\d+)\W+(\d+)$/
如果您需要将最后一个空格全部输入到组1中,则下一个数字输入到组2中,最后一个数字输入到组3中\W+
匹配1+个字符而不是单词字符,因此它匹配-
和更多字符。如果有-
,只需使用连字符而不是\W+
见附录a和a:
图案详情:
^
-字符串的开头
(.*)
-组1捕获除换行符以外的任何0+字符,尽可能多地捕获到最后一个字符李>
\s
-空格,后跟
(\d+)
-第2组:一个或多个数字
\W+
-1+非单词字符
(\d+)
-第3组:一个或多个数字
$
-字符串结束
另外,请注意,如果最后一部分是可选的,请使用可选的捕获组(即,(?:…)?
,(?:\W+(\d+)),(?:\W+),
)。@Wiktor Stribiżew。。。你是天才。非常感谢。是的,正则表达式的决定很好。我稍微编辑了正则表达式到'/^(.*)s(\d+)(:\W+(\d+))$/'
现在没有错误。。。我需要你的建议。
$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
}