首页 > 解决方案 > 热门在 PHP DOM 文档输出中添加新行 \r\n 和选项卡?

问题描述

我使用 PHP DOM 为 HTML 制作了简单的解析器,但我的输出中有新行 (\r\n) 的问题。这是我的代码(我知道它可能质量很差,但它几乎可以工作而且我是初学者;))

<?php

$html = file_get_contents('page_1_second.html');

$dom = new DOMDocument();
$internalErrors = libxml_use_internal_errors(true);
$dom->loadHtml('<?xml encoding="utf-8" ?>'.$html);
libxml_use_internal_errors($internalErrors);

$finder = new DomXPath($dom);
$classname = 'row1h';
$nodes = $finder->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
$tmp_dom = new DOMDocument();

foreach($nodes as $node)
{
    $tmp_dom->appendChild($tmp_dom->importNode($node,true));
}
$innerHTML = trim($tmp_dom->saveHTML());

$output = new DOMDocument();
$internalErrors = libxml_use_internal_errors(true);
$output->loadHtml('<?xml encoding="utf-8" ?>'.$innerHTML);
libxml_use_internal_errors($internalErrors);

foreach($output->getElementsByTagName('a') as $link)
{   
    echo
    '<topic_title>'.$link->nodeValue.'</topic_title>'.
    '<br>'.'/r/n'.
        '<topic_desc>'.$link->getAttribute('title').'</topic_desc>'.
    '<br><br>'; 
}

?>

上面的代码给我输出 \r\n 作为文本,但我想要换行:

<topic_title>Title ONE</topic_title><br>\r\n<topic_desc>DESC1</topic_desc><br><br><topic_title>Title two</topic_title><br>\r\n<topic_desc>DESC 2</topic_desc><br><br><topic_title>Title 3</topic_title><br>\r\n<topic_desc>DESC 3</topic_desc><br><br>

我正在尝试,但我无法让输出看起来像这样:

<topic_title>Title ONE</topic_title><br>
    <topic_desc>DESC1</topic_desc>

<topic_title>Title two</topic_title><br>
    <topic_desc>DESC 2</topic_desc><br>

<topic_title>Title 3</topic_title><br>
    <topic_desc>DESC 3</topic_desc><br><br>

我正在尝试formatOutput = true;,但它不起作用。

任何人都可以帮我解决这个问题吗?

标签: phpxmldomhtml-parsing

解决方案


您需要使用双引号来解释转义序列。

您是否尝试过使用双引号 " " 而不是单引号 ' ' ?


推荐阅读