0

このhtmlから郵便番号(91150)を取得しようとしています:

<div>

<strong>Adresse de la commune : </strong><br>
HOTEL DE VILLE<br>91150&nbsp;ABBEVILLE-LA-RIVIERE&nbsp;
<p>Téléphone : <strong>01 64 95 67 37</strong><br>
Fax : <strong>01 69 58 80 17</strong></p>


<p>Localisation géographique : </p>
</div>

PHPで私がした:

$page = file_get_contents($url);
preg_match('`<strong>Adresse de la commune : </strong>([^[0-9]]*)<p>`', $page, $regs);
var_dump($regs);// returns empty

誰か助けてくれませんか、ありがとう

4

5 に答える 5

1

郵便番号が電話番号やファックス番号よりも連続した数字であることは確かです。このアイデアを使用すると、それを抽出できます

preg_match('#Adresse de la commune\D+(\d{3,})#s', $page, $regs);
于 2012-04-23T13:24:32.443 に答える
0

少し簡略化しました。これはうまくいきますか?

preg_match('/[^0-9]([0-9]{5})[^0-9]/', $page, $regs);
于 2012-04-23T13:23:50.727 に答える
0

郵便番号が常に 5 桁の連続した単語として書かれていると仮定すると、以下のコードでそれを抽出できます。

$matches = array();
preg_match("/\b(\d{5})\b/", $page, $matches);
echo $matches[1]; // 91150

\b-anchors は、郵便番号を独自の単語に強制します。この方法では、たとえば、6 桁の電話番号の 5 桁は一致しません。

于 2012-04-23T13:26:15.577 に答える
0

これで:

(?<![0-9])[0-9]{5}(?![0-9])

5 つの数字の任意のグループを一致させることができます。その後、入力文字列に基づいてさらに制限を追加できます。後で改行しないスペースが常にある場合は、次を使用できます。

(?<![0-9])[0-9]{5}(?:&nbsp;)

そして、正規表現を入力に対してより正確にするために必要な他の多くの制限。私は .NET 正規表現構文を使用しましたが、それが不便でないことを願っています。

于 2012-04-23T13:29:09.357 に答える
0

次のようにダンプします。

$postalcode = preg_match('`<strong>Adresse de la commune : </strong>([^[0-9]]*)<p>`', $page, &$regs);
var_dump($postalcode);
于 2012-04-23T13:25:33.437 に答える