我有一个应用程序,我正在解析地址,并一直在尝试实现以下正则表达式从地址中获取美国邮政编码。一旦我抓住它,我想从地址字符串中删除邮政编码,因为邮政编码干扰了抓取电话号码。但是,以下内容并未抓取邮政编码。
$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);
有人可以建议如何让它发挥作用吗?
谢谢!
答案 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'];