-2
我有一個應用程序,我在解析地址,並試圖實現下面的正則表達式來從地址中獲取美國郵政編碼。一旦我抓住它,我想從地址字符串中刪除郵政編碼,因爲郵政編碼干擾了電話號碼的獲取。但是,以下內容不會抓取郵政編碼。正則表達式PHP解析郵政編碼並從字符串中刪除
$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);
任何人都可以建議如何讓這個工作?
謝謝!
爲什麼不使用'preg_replace()'將其刪除。手動搜索和str_replace是不需要的。 – mario 2013-02-12 02:53:42
你的代碼中的錯誤是,你沒有將郵政編碼包裹在括號中來捕獲它們。 '(\ d {5}( - \ d {4})?)' - 一旦你明白了,看看你在match數組中有什麼。然後,磨練你的正則表達式,使用preg_replace()來代替馬里奧所暗示的。 – Jerry 2013-02-12 03:04:57
you mean preg_match_all(「/ \ b [A-Z] {2} \ s +(\ d {5})( - \ d {4})?)\ b /」,$ string,$ matches); – user1904273 2013-02-12 03:15:42