-2

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

$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);

谁能建议如何让它工作?

谢谢!

4

1 回答 1

0

试试这个代码,这会给你电话和拉链,而不用替换任何东西。

假设 Zip 和 phone 将始终位于字符串的末尾,那么 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'];
于 2013-02-12T05:00:25.910 回答