2017-06-21 82 views
0

我在应用程序中的PHP文件\意见\ article.php笨,视图模板字符串的DomDocument操作

article.php内容:

<!DOCTYPE html> 
<html prefix='og: http://ogp.me/ns#'> 
<head> 
    <title>test</title> 
</head> 
<body> 
<div> test div1 </div> 
<div> test div2 </div> 
</body> 
</html> 

当我使用$这 - >负载> view()加载article.php模板并使用DomDocument获取dom。

$html=$this->load->view('article','',TRUE); 
$doc = new DomDocument; 
$doc->loadHTML($html);  
echo $doc->saveXML($doc->getElementsByTagName('div')->item(0)); 
// or echo $doc->saveXML(); 

具有错误消息: 消息:DOM文档:: loadHTML():预期的结束标记:元中的实体,行:4

但WHE我使用此:

$html='<!DOCTYPE html> 
    <html prefix=\'og: http://ogp.me/ns#\'> 
    <head> 
     <title>test</title> 
    </head> 
    <body> 
    <div> test div1 </div> 
    <div> test div2 </div> 
    <p>Directory </p> 
    </body> 
    </html>'; 

    $doc->loadHTML($html);   
    echo $doc->saveXML($doc->getElementsByTagName('div')->item(0)); 
    // or echo $doc->saveXML(); 

这是成功。

gettype($ html)给$ html的两个方法,都是字符串。

回答

1

尝试隐藏警告与

libxml_use_internal_errors(true); 

或者:

@$doc->loadHTML($html); 

该警告是因为$this->load->view('article','',TRUE);返回的HTML是无效的,loadHTML()解决此,但显示的警告。

Manual

+0

为什么?这$ this-> load-> view('article','',TRUE)是无效的吗? –

+0

也许unescape字符,尝试用一个简单的'var_dump($ doc-> loadHTML($ html))来查看这个HTML的字符串;'什么给你看? – kip

+0

unescape字符? var_dump($ doc-> loadHTML($ html))显示更多的错误信息:DOMDocument :: loadHTML():意外的结束标签:元在实体,行:4 .....行:9,五条消息。 var_dump($ html-> loadHTML($ html))show bool(true) –