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

在PHP中,使用正则表达式删除属性的值,php,regex,Php,Regex,假设我有以下字符串: <a name="anchor" title="anchor title"> 但是它也会得到名称=“part”,我只需要值。正则表达式(\S+=[“]”]?((?:.(![“]”])?\S+(?:\S+=[>”)+)[“]”可以用来提取所有属性。DOMDocument示例: <?php $titles = array(); $doc = new DOMDocument(); $doc->loadHTML("<html><body&

假设我有以下字符串:

<a name="anchor" title="anchor title">
但是它也会得到名称=“part”,我只需要值。

正则表达式
(\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');
    }
}
?>

可以使用RegEx,但如果可能,会建议更快地读取DOM。您尝试过的代码示例是什么?您不应该在这个特定用例中使用RegEx。我建议参考这些文档:如果您想正确地使用HTML解析器。RegEx不是解析HTML的明智方法。请看这里:我是在呈现页面之前解析数据,这样就不可能使用DOM,对吗?
<?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');
    }
}
?>