Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Dom文档Don';不固定标记_Php_Domdocument - Fatal编程技术网

PHP Dom文档Don';不固定标记

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

如何阻止DOMDocument拥有自己的想法

$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-->", "&lt;!--INDEX-$i--&gt;"), $match, $validHtml);
        }
    }
$validHtml=$dom->saveHTML();
如果(计数($matches)>0){
foreach($i=>$match){
$validHtml=str_replace(数组(“,”!--INDEX-$i--”)$match,$validHtml);
}
}

我认为这是无法改变的,但如果可以的话,可能是通过改变DTD来实现的。