首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分户地址、街道名称、房号和房间号

分户地址、街道名称、房号和房间号
EN

Stack Overflow用户
提问于 2017-02-10 22:46:39
回答 1查看 2.5K关注 0票数 1

我需要拆分地址:Main Str. 202-52 I street=Main Str. house No.=202 room No.=52 --我试着使用这个:

代码语言:javascript
复制
$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']);,但只知道街名.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-10 22:49:37

您可以使用一个正则表达式,如

代码语言:javascript
复制
/^(.*)\s(\d+)\W+(\d+)$/

如果您需要在第一组中使用最后一个空格,第二组中需要下一个数字,第三组中需要最后一个数字。\W+与word字符以外的1+字符匹配,所以它匹配-等等。如果您在那里有一个-,只需使用连字符而不是\W+

regex演示PHP演示

代码语言:javascript
复制
$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+))?)包装该捕获组。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42169873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档