我正在尝试从HTML代码中提取地址和电话号码。
首先,我从页面内容中获取容器成员地址的内容。 preg_match('/id="member-addresses".*?<\/div>/is', $webpage, $contact_details);
返回此
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);
这不会返回任何东西。有什么问题。
答案 0 :(得分:1)
那里有一些错误。
<?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
之间的第二个问题是您有空格(如果空格是可选的,请将\s+
更改为\s*
,+
需要它。第三个问题,你没有对你搜索的内容进行分组。可能的第四个问题是使用PCRE修饰符{tilton'之后的i
意味着不区分大小写可能不需要它。 s
表示.
将匹配换行符以及任何字符。 http://php.net/manual/en/reference.pcre.pattern.modifiers.php