PHP REGEX:邮政编码需要 PREG_SPLIT() 的帮助


PHP REGEX: Help needed with PREG_SPLIT() for zip code

我有这样的内容

圣克莱门特, CA 92673

阿灵顿, TX 76012-3693

我需要将其分为CityAndStateZip.
一些

我在努力:

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

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

有什么指示吗?

试试这个:

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

  • (?=[0-9]{5})是一个积极的展望;它断言字符串的下一部分是五位数,但不消耗它们。

因此,您的分隔符是一些空格,后跟五位数字。