在 PHP 中,使用正则表达式删除属性的值


In PHP Remove Value of Attributes using Regex

假设我有以下字符串:

<a name="anchor" title="anchor title">

目前,我可以使用strpos和substr提取名称和标题,但我想做对了。 如何使用正则表达式执行此操作?如果我想从文本块中的许多标签中提取,该怎么办?

我试过这个正则表达式:

/name="([A-Z,a-z])'w+/g

但它也得到了 name=" 部分,我只想要值。

则表达式('S+)=["']?((?:.(?!["']?'s+(?:'S+)=|[>"']))+.)["']?可用于提取所有属性

DOMDocument 示例:

<?php
$titles = array();
$doc = new DOMDocument();
$doc->loadHTML("<html><body>Test<br><a name="anchor" title="anchor title"></body></html>");
$links = $doc->getElementsByTagName('a');
if ($links->length!=0) {
    foreach ($links as $a) {
        $titles[] = $a->getAttribute('title');
    }
}
?>

您评论说:"我实际上是在渲染页面之前解析数据,因此 DOM 是不可能的,对吧?

我们正在处理抓取的 HTML,因此我们使用这些函数构造一个 DOM,并像 XML 一样解析。

评论中的好例子:http://php.net/manual/en/domdocument.getelementsbytagname.php