如何阻止DOMDocument自己的想法?
$dom = new DOMDocument();
$validHtml = '<body><a href="{{ var name=test method=toString }}">Test</a></body>';
$dom->loadHTML($validHtml);
加载后,锚属性被编码。我希望它不要这样做。
$body = $dom->saveHTML();
var_dump($body);
//<body><a href="%7B%7B%20var%20name=test%20method=toString%20%7D%7D">Test</a></body>
我意识到这已经被覆盖过了,但是我所看到的每一个,它都是无用的Ninja代码。任何帮助赞赏。
答案 0 :(得分:0)
以下是我修复自己问题的方法。基本上,我决定去除标记中的所有标记,并放置我以后可以用来放回来的持有者:
$validHtml = '<body><a href="{{ var name=test method=toString }}">Test</a></body>';
$matches = array();
preg_match_all('/{{[^}]+}}/',$validHtml, $matches);
$matches = $matches[0];
if (count($matches)>0){
foreach ($matches as $i=>$match){
$validHtml = str_replace($match, "<!--INDEX-$i-->", $validHtml);
}
}
$dom = new DOMDocument();
$dom->loadHTML($validHtml);
... //do processing on the loaded dom
在操纵dom之后,我把所有的比赛放回去了:
$validHtml = $dom->saveHTML();
if (count($matches)>0){
foreach ($matches as $i=>$match){
$validHtml = str_replace(array("<!--INDEX-$i-->", "<!--INDEX-$i-->"), $match, $validHtml);
}
}