PHP文档剥离HTML标记
我正在开发一个小型模板引擎,并使用DOMDocument解析页面。到目前为止,我的测试页面如下所示:PHP文档剥离HTML标记,php,Php,我正在开发一个小型模板引擎,并使用DOMDocument解析页面。到目前为止,我的测试页面如下所示: <block name="content"> <?php echo 'this is some rendered PHP! <br />' ?> <p>Main column of <span>content</span></p> </block> private function
<block name="content">
<?php echo 'this is some rendered PHP! <br />' ?>
<p>Main column of <span>content</span></p>
</block>
private function parse($tag, $attr = 'name')
{
$strict = 0;
/*** the array to return ***/
$out = array();
if($this->totalBlocks() > 0)
{
/*** a new dom object ***/
$dom = new domDocument;
/*** discard white space ***/
$dom->preserveWhiteSpace = false;
/*** load the html into the object ***/
if($strict==1)
{
$dom->loadXML($this->file_contents);
}
else
{
$dom->loadHTML($this->file_contents);
}
/*** the tag by its tag name ***/
$content = $dom->getElementsByTagname($tag);
$i = 0;
foreach ($content as $item)
{
/*** add node value to the out array ***/
$out[$i]['name'] = $item->getAttribute($attr);
$out[$i]['value'] = $item->nodeValue;
$i++;
}
}
return $out;
}
我让它以我想要的方式工作,它抓住页面上的每个页面并将其内容注入到我的模板中,但是,它正在剥离中的HTML标记,因此返回以下内容,而不带或标记:
我做错了什么?:)谢谢,什么都没有:nodeValue是树的值部分的串联,永远不会有标记 要在$node下生成树的HTML片段,我要做的是:
$doc = new DOMDocument();
foreach($node->childNodes as $child) {
$doc->appendChild($doc->importNode($child, true));
}
return $doc->saveHTML();
HTML“片段”实际上比您一开始想象的问题更大,因为它们往往缺少诸如doctype和字符集之类的东西,这使得很难确定地在DOM树的各个部分和HTML片段之间来回切换
$doc = new DOMDocument();
foreach($node->childNodes as $child) {
$doc->appendChild($doc->importNode($child, true));
}
return $doc->saveHTML();