正则表达式php解析邮政编码并从字符串中删除

时间:2013-02-12 02:48:54

标签: php regex zipcode

我有一个应用程序,我正在解析地址,并一直在尝试实现以下正则表达式从地址中获取美国邮政编码。一旦我抓住它,我想从地址字符串中删除邮政编码,因为邮政编码干扰了抓取电话号码。但是,以下内容并未抓取邮政编码。

$string = "John Doe 1234 Main Street Peoria, IL 60601 (555) 555-5555";
function extract_zipcode_from($string){
  preg_match_all("/\b[A-Z]{2}\s+\d{5}(-\d{4})?\b/", $string, $matches);
  return $matches[0];
}
$zip = extract_zipcode_from($string);
$zip = print_r(implode("\n", $zip),true);
$string = str_ireplace($zip,"",$string);

有人可以建议如何让它发挥作用吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用此代码,这将为您提供手机和拉链,而无需替换任何内容。

假设Zip和手机将始终位于字符串的末尾,则zip后面的任何内容都是电话号码。

$string = "John Doe 1234 Main Street Peoria, IL 60601 (555) 555-5555";

preg_match("/(?P<zip>\d{5})(?P<phone>.*)$/",$string,$match);

echo "Zip : ".$match['zip'];
echo "<br>";
echo "Phone : ".$match['phone'];