PHP preg_match 从 html 代码中提取地址
PHP preg_match to extract addresses from html code
我正在尝试从 HTML 代码中提取地址和电话号码。
首先我从页面内容中获取容器member-address的内容。 preg_match('/id="member-addresses".*?<\/div>/is', $webpage, $contact_details);
这个returns这个
id="member-addresses">
<h2>Contact details</h2>
<h3 id="foobar">Work</h3>
<p>
123 Fake Street, Main Area, PG42 TGJ<br />
Tel: 020 9 555 42589<br />
</p>
</div>
现在我想获取工作地址。
preg_match('/Work</h3><p>.*?<br \/>/', $contact_details[0], $address_work);
这没有返回任何东西。有什么问题。
你那里有一些错误。
<?php
$a = ' id="member-addresses">
<h2>Contact details</h2>
<h3 id="foobar">Work</h3>
<p>
123 Fake Street, Main Area, PG42 TGJ<br />
Tel: 020 9 555 42589<br />
</p>
</div>';
preg_match('~Work</h3>\s+<p>(.*?)<br />~is', $a, $address_work);
print_r($address_work);
第一个错误是您使用“/”作为正则表达式定界符,因此您需要在正则表达式中转义它的所有实例。我已经把它换成了波浪线,因为我发现它们没有用。在结束 h3
和 p
之间的第二个问题你有白色 space (如果白色 space 是可选的,将 \s+
更改为 \s*
+
需要它)。第三个问题是您没有对搜索的内容进行分组。潜在的第四个问题是 PCRE 修饰符,波浪号后的 i
表示不区分大小写,您可能不希望这样。 s
表示 .
将匹配换行符以及任何字符。 http://php.net/manual/en/reference.pcre.pattern.modifiers.php
我正在尝试从 HTML 代码中提取地址和电话号码。
首先我从页面内容中获取容器member-address的内容。 preg_match('/id="member-addresses".*?<\/div>/is', $webpage, $contact_details);
这个returns这个
id="member-addresses">
<h2>Contact details</h2>
<h3 id="foobar">Work</h3>
<p>
123 Fake Street, Main Area, PG42 TGJ<br />
Tel: 020 9 555 42589<br />
</p>
</div>
现在我想获取工作地址。
preg_match('/Work</h3><p>.*?<br \/>/', $contact_details[0], $address_work);
这没有返回任何东西。有什么问题。
你那里有一些错误。
<?php
$a = ' id="member-addresses">
<h2>Contact details</h2>
<h3 id="foobar">Work</h3>
<p>
123 Fake Street, Main Area, PG42 TGJ<br />
Tel: 020 9 555 42589<br />
</p>
</div>';
preg_match('~Work</h3>\s+<p>(.*?)<br />~is', $a, $address_work);
print_r($address_work);
第一个错误是您使用“/”作为正则表达式定界符,因此您需要在正则表达式中转义它的所有实例。我已经把它换成了波浪线,因为我发现它们没有用。在结束 h3
和 p
之间的第二个问题你有白色 space (如果白色 space 是可选的,将 \s+
更改为 \s*
+
需要它)。第三个问题是您没有对搜索的内容进行分组。潜在的第四个问题是 PCRE 修饰符,波浪号后的 i
表示不区分大小写,您可能不希望这样。 s
表示 .
将匹配换行符以及任何字符。 http://php.net/manual/en/reference.pcre.pattern.modifiers.php