1

私はのようないくつかのテキストブロックを持っています

John + and + Co-Accountants-Hove-BN31GE-2959519

郵便番号「BN31GE」を抽出する関数が必要です。たまたま存在せず、郵便番号のないテキストブロックがある可能性があるため、関数は、抽出されたテキストが有効な郵便番号であるかどうかも検証する必要があります。

John + and + Co-Accountants-Hove-2959519
4

3 に答える 3

4

郵便番号に関する英国政府のデータ標準は次のとおりです。

((GIR 0AA)|((([A-PR-UWYZ][0-9][0-9]?)|(([A-PR-UWYZ][A-HK-Y][0-9][0-9]?)|(([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY])))) [0-9][ABD-HJLNP-UW-Z]{2}))

編集:私は、現在存在しない英国政府のWebページへの参照を含むいくつかの(個人的な)コードで上記を持っていました。適切な英国規格はBS7666であり、これに関する情報は現在ここで入手できます。これには、わずかに異なる正規表現がリストされています。

于 2011-06-20T10:55:01.367 に答える
2

有効な英国の郵便番号を抽出するには、以下のコードを見つけてください。郵便番号が空の場合は配列を返します。

<?php
$getPostcode="";
$str="John+and+Co-Accountants-Hove-BN31GE-2959519";
$getArray = explode("-",$str);
if(is_array($getArray) && count($getArray)>0) {
    foreach($getArray as $key=>$val) {
        if(preg_match("/^(([A-PR-UW-Z]{1}[A-IK-Y]?)([0-9]?[A-HJKS-UW]?[ABEHMNPRVWXY]?|[0-9]?[0-9]?))\s?([0-9]{1}[ABD-HJLNP-UW-Z]{2})$/i",strtoupper($val),$postcode)) {
            $getPostcode = $postcode[0];
        }
    }
}
print"<pre>";
print_r($getPostcode); 
?>
于 2011-06-20T11:31:00.787 に答える
0

正規表現を使用する:preg_grep関数、

英語の郵便番号の形式はわかりませんが、次のようなものを使用できます。

(-[a-zA-Z0-9]+-)+

これは一致します

  • 「-会計士-」
  • 「-BN31GE-」

次に、常に2番目の値を取得するか、正規表現を拡張して英語の郵便番号に正確に一致させることができます。

 ([A-Z0-9]{6})
于 2011-06-20T10:48:42.787 に答える