-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 に答える