1

如何从<a>标签中删除所有属性,除了href="/index.php..."?并添加一个自定义类?

所以这:

<a href="/index.php?option=com_virtuemart&view=cart&Itemid=105&lang=en" style="float:right;">content</a>

变成:

<a href="index.php?option=com_virtuemart&view=cart&Itemid=105&lang=en" class="custom">content</a>

我无法管理 preg_replace 来工作:`

<?php
    $text = '<a href="index.php?option=com_virtuemart&view=cart&Itemid=105&lang=en" class="custom">content</a>';
    echo preg_replace("/<a([a-z][a-z0-9]*)(?:[^>]*(\shref=['\"][^'\"]['\"]))?>/i", '<$1$2$3>', $text);
?>
4

2 回答 2

2

DOMDocument更好,但使用正则表达式

preg_replace("/<a [^>]*?(href=[^ >]+)[^>]*>/i", '<a $1 class="custom">', $text);

假定属性中没有空格,href也没有>属性。

于 2013-03-03T19:19:10.333 回答
1

你可以使用DomDocument

libxml_use_internal_errors(true);
$doc = new DOMDocument();
$doc->loadHTML('<a href="/index.php?option=com_virtuemart&view=cart&Itemid=105&lang=en" style="float:right;">content</a>');
$items = $doc->getElementsByTagName('a');
$href = $items->item(0)->getAttribute('href');
$value = $items->item(0)->nodeValue;
libxml_clear_errors();
echo '<a href="'.$href.'" class="custom">'.$value.'</a>';
于 2013-03-03T19:04:35.340 回答