php regex从html dom获取邮政地址

时间:2012-04-23 13:17:39

标签: php regex

我正试图从这个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

有人可以帮忙谢谢,

5 个答案:

答案 0 :(得分:1)

您可以确定您的邮政编码比电话和传真号码更具连续性。使用这个想法你可以提取它

preg_match('#Adresse de la commune\D+(\d{3,})#s', $page, $regs);

答案 1 :(得分:0)

我简化了一下。这对你有用吗?

preg_match('/[^0-9]([0-9]{5})[^0-9]/', $page, $regs);

答案 2 :(得分:0)

像这样转储:

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

答案 3 :(得分:0)

假设邮政编码总是写成5个连续数字的单词,下面的代码可以提取它:

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

\b - 锚点强制邮政编码成为自己的一个词。例如,这样,6位电话号码中的5位数字就不匹配了。

答案 4 :(得分:0)

有了这个:

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

您可以匹配任意一组5个数字。然后,您可以根据输入字符串添加更多限制。 如果之后总是有一个不间断的空间,你可以使用:

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

正如您需要的许多其他限制一样,您的正则表达式对您的输入更准确。 我使用.NET正则表达式语法,我希望这不会带来不便。

相关问题