PHP Dom文档Don';不固定标记
如何阻止DOMDocument拥有自己的想法PHP Dom文档Don';不固定标记,php,domdocument,Php,Domdocument,如何阻止DOMDocument拥有自己的想法 $dom = new DOMDocument(); $validHtml = '<body><a href="{{ var name=test method=toString }}">Test</a></body>'; $dom->loadHTML($validHtml); $dom=newdomdocument(); $validHtml=''; $dom->loadHTML($validHt
$dom = new DOMDocument();
$validHtml = '<body><a href="{{ var name=test method=toString }}">Test</a></body>';
$dom->loadHTML($validHtml);
$dom=newdomdocument();
$validHtml='';
$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>
$body=$dom->saveHTML();
var_dump($车身);
//
我意识到这已经被覆盖过了,但我看的每一个地方,它都是更无用的忍者代码。谢谢你的帮助 以下是我如何解决自己的问题。基本上,我决定去掉标记中的所有标记,并放置支架,以便以后使用:
$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
$validHtml='';
$matches=array();
preg_match_all('/{{[^}]+}}/',$validHtml,$matches);
$matches=$matches[0];
如果(计数($matches)>0){
foreach($i=>$match){
$validHtml=str_replace($match,“,$validHtml);
}
}
$dom=新的DOMDocument();
$dom->loadHTML($validHtml);
... //在加载的dom上执行处理
在操作dom之后,我将所有匹配项放回:
$validHtml = $dom->saveHTML();
if (count($matches)>0){
foreach ($matches as $i=>$match){
$validHtml = str_replace(array("<!--INDEX-$i-->", "<!--INDEX-$i-->"), $match, $validHtml);
}
}
$validHtml=$dom->saveHTML();
如果(计数($matches)>0){
foreach($i=>$match){
$validHtml=str_replace(数组(“,”!--INDEX-$i--”)$match,$validHtml);
}
}
我认为这是无法改变的,但如果可以的话,可能是通过改变DTD来实现的。