【问题标题】:PHP REGEX: Help needed with PREG_SPLIT() for zip codePHP REGEX:邮政编码的 PREG_SPLIT() 需要帮助
【发布时间】:2012-04-12 23:43:26
【问题描述】:

我有类似的内容

加利福尼亚州圣克莱门特 92673

德克萨斯州阿灵顿 76012-3693

我需要将其拆分为CityAndStateZip
一些

我正在尝试:

$moreAddressInfo = preg_split('^[0-9.]{5,}^', $row2['cityAndZip'],null,PREG_SPLIT_DELIM_CAPTURE);

(也试过不带标志)
... CityState 部分返回得很好,但缺少主要的 Zip 信息
(对于上述两个示例,$moreAddressInfo[1] 将分别等于 '''-3693'

任何指针?

【问题讨论】:

  • PREG_SPLIT_DELIM_CAPTURE 在模式中有一个组之前是无用的。
  • 因为 REGEX 对我来说仍然像是某种巫术魔法,所以我不得不相信你的话 ;) ... 任何指示/建议?
  • 用你自己的话告诉你希望那行代码为你做什么。
  • 我建议您使用 preg match 找到邮政编码的位置,然后在该位置拆分并修剪空格和逗号。
  • 我想将“Arlington, TX 76012-3693”分成两个变量 .. 1) “Arlington, TX” .. 2) “76012-3693”

标签: php regex zipcode preg-split


【解决方案1】:

试试这个:

$moreAddressInfo = preg_split('~\s+(?=[0-9]{5})~', $row2['cityAndZip']);
  • \s+ 匹配一个或多个空白字符。

  • (?=[0-9]{5}) 是正向前瞻;它断言字符串的下一部分是五位数,但不使用它们。

所以你的分隔符是一些空格,后跟五位数字。

【讨论】:

  • 太棒了!!!!!!!感谢您的解释。正是我想要的结果。 :-D
猜你喜欢
  • 2014-10-31
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-11-14
相关资源
最近更新 更多