PHP preg_match从html代码中提取地址

时间:2015-03-07 16:08:36

标签: php preg-match

我正在尝试从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);

这不会返回任何东西。有什么问题。

1 个答案:

答案 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);

您使用'/'作为正则表达式分隔符的第一个错误,因此您需要转义正则表达式中的所有实例。我把它换成了波浪,因为我发现没有用。结束h3p之间的第二个问题是您有空格(如果空格是可选的,请将\s+更改为\s*+需要它。第三个问题,你没有对你搜索的内容进行分组。可能的第四个问题是使用PCRE修饰符{tilton'之后的i意味着不区分大小写可能不需要它。 s表示.将匹配换行符以及任何字符。 http://php.net/manual/en/reference.pcre.pattern.modifiers.php

相关问题