preg_match如何使用simple_HTML_dom.php为HTML工作?

preg_match如何使用simple_HTML_dom.php为HTML工作?,php,html,Php,Html,我有这样的html代码 <div class="address adr"> <span class="street-address"><span class="no_ds> CONTENT1</span> <span class="postal-code">CONTENT2</span> <span class="locality">CONTENT3</span>

我有这样的html代码

<div class="address adr">
    <span class="street-address"><span class="no_ds> CONTENT1</span>
        <span class="postal-code">CONTENT2</span>
        <span class="locality">CONTENT3</span>
    /span>
</div>

使用PHP解析HTML
HTML不是常规语言,无法使用正则表达式正确解析。使用HTML解析器来实现这一点。在PHP中,默认情况下该类可用。有关可用于解析和处理HTML的库的详细列表,请参阅

下面是使用
DOMDocument
类提取
类名的方法:

$html = <<<HTML
<div class="address adr">
    <span class="street-address"><span class="no_ds"> CONTENT1</span>
        <span class="postal-code">CONTENT2</span>
        <span class="locality">CONTENT3</span>
    /span>
</div>
HTML;

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('div') as $tag) {
    echo $tag->getAttribute('class'), PHP_EOL;
}
使用HTML解析器,您可以以任何方式解析/操作HTML,并确保其工作正常。正则表达式的情况并非如此。当属性的顺序改变时,正则表达式可能会中断。当您具有可以递归定义的嵌套属性时,正则表达式可能会失败,而HTML解析器则不会

学习正则表达式 正则表达式非常广泛,不能用一个单一的答案来解释。如果你想学习正则表达式,我建议你从一个像样的资源开始学习,比如

要测试正则表达式,可以使用在线测试仪,例如,
为了将它们合并到PHP脚本中,您可以使用
preg.*
函数--,

查看简单HTML DOM手册。我相信这将有助于您:
仔细阅读所有内容。

然后你必须学习正则表达式。。。范围很广。可能的答案太多,或者好的答案对于这种格式来说太长。请添加详细信息,以缩小答案集或隔离可以在几段中回答的问题。这是一个巨大的资源。还可以查看PHP手册。这应该是一个注释。所以很快获得50的声誉:)对不起,我没注意到。
$html = <<<HTML
<div class="address adr">
    <span class="street-address"><span class="no_ds"> CONTENT1</span>
        <span class="postal-code">CONTENT2</span>
        <span class="locality">CONTENT3</span>
    /span>
</div>
HTML;

$dom = new DOMDocument;
$dom->loadHTML($html);
foreach ($dom->getElementsByTagName('div') as $tag) {
    echo $tag->getAttribute('class'), PHP_EOL;
}
address adr