我正试图删除类名为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();