我有一个像onclick=window.location='abc.html'> lala
的代码,我想制作一个正则表达式来削减它以满足以下要求:
>
,则结果应为> lala
>
那么字符串会被剪切到空格,结果只会是lala
我已经完成了以下preg_replace,但我错了,问题是什么?
$text=preg_replace('/(onclick)(.*?)(>|\s)/','',$text);
答案 0 :(得分:0)
<?php
echo preg_replace('/(onclick)(.*?)((?=>)|\s)/','',"onclick=window.location='abc.html'> lala");
echo preg_replace('/(onclick)(.*?)((?=>)|\s)/','',"onclick=window.location='abc.html' lala");
?>
你必须搜索&gt;向前看,所以它不会被捕获和替换。 (=&GT;?)
答案 1 :(得分:0)
$text = preg_replace('/onclick.+?((\s|>).+)/', "$1", $text);
答案 2 :(得分:0)
一种干净的方法是使用DOM,例如:
$doc = new DOMDocument();
@$doc->loadHtml($yourHtmlDocument);
$xpath = new DOMXPath($doc);
$tags = $xpath->query("//*[@onclick]");
foreach ($tags as $tag) {
$tag->removeAttribute('onclick');
}
$result = $doc->saveHtml();