如何删除';a';按类名在字符串中标记


how remove 'a' tag in a string by its class name

我正试图删除类名为class="btn"的标记从下面的$str变量使用php代码

$str = '<div class="btn-holder">
<a class="btn" href="=#">
<span>Log In</span>
</a>
<p><strong>
<em>
<a id="reset" href="#">Reset My Password</a>
</em>
</strong>
</p>
</div>';

试试,这个:

$str = '<div class="btn-holder">
<a class="btn" href="=#">
<span>Log In</span>
</a>
<p><strong>
<em>
<a id="reset" href="#">Reset My Password</a>
</em>
</strong>
</p>
</div>';
$result = preg_replace('/<a href='"(.*?)'">(.*?)<'/a>/', "''2", $str);
echo $result;
preg_replace('#<a.*?class="btn".*?>.*?</a>#', '', $str);

不要使用regexp来解析XML文档。还有其他方法可以做到。例如:

$doc = new DOMDOcument;
$doc->loadxml('your XML');
$xpath = new DOMXpath($doc);
foreach($xpath->query('//s[contains(@class,"btn")]') as $node) {
   $node->parentNode->removeChild($node);
}
echo $doc->savexml();

$str = '...';

echo preg_replace('/<('w)+.*?class=["'']btn["''].*?>(.*?)</'1>/s', '', $str);

此RegExp从$str中删除所有类为"btn"的元素。

如果要保留标记内容,请在preg_replace上使用''2

echo preg_replace('/<('w)+.*?class=["'']btn["''].*?>(.*?)</'1>/s', '''2', $str);

我认为,更好的方法是使用jquery库。

$('a.btn').remove();