我正试图从这个html获取邮政编码(91150):
<div>
<strong>Adresse de la commune : </strong><br>
HOTEL DE VILLE<br>91150 ABBEVILLE-LA-RIVIERE
<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
有人可以帮忙谢谢,
答案 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}(?: )
正如您需要的许多其他限制一样,您的正则表达式对您的输入更准确。 我使用.NET正则表达式语法,我希望这不会带来不便。