1

私はこのコードが嫌いです。それが行うことは、zipcode が米国またはカナダであるかどうかを確認する html ページから郵便番号を取得することです。

<?php

$contents = file_get_contents('853755.html');

preg_match_all('/<td id="u_zipCode">(.*?)<\/td>/s', $contents, $matches);

$data = implode("|",$matches[0]);
$string = str_replace(' ', '', $data);


if(preg_match('/^[1-9][0-9]*$/',$string)){
    echo "Canada";
    }
    else
    {
        echo "USA";
        }

?>

私はそれの解決策を探す必要がありました。しかし、私は解決策を見つけることができません。単一のアルファベットではなく数字のみを含める必要があるという正規表現も試しました。しかし、これはまったく機能していないようです。郵便番号はこの形式で与えられます。

USA: 97365
USA: 97365-97366
Canada: j8n7s1
Canada: N2L5Y6

この解決策を教えてください。ありがとう

4

1 に答える 1

1

特定の ID を持つ要素は 1 つしか存在できないため、 を使用する必要はなくpreg_match_all()、 を使用できますpreg_match()

preg_match('/<td id="u_zipCode">(.*?)<\/td>/s', $contents, $match);

その後、使用する必要はありませんimplode()。キャプチャ グループに一致する部分は、match配列の要素 1 になります。

$string = str_replace(' ', '', $match[1]);

if(preg_match('/^\d{5}(-\d{4})?$/',$string)) {
    echo "USA";
} else {
    echo "Canada";
}
于 2013-07-24T07:49:51.753 に答える