热衷于在 PHP DOM 文档输出中添加新行 \r\n 和选项卡?

Hot to add new line \r\n and tabs in PHP DOM Document output?

提问人:Kamil Janicki 提问时间:5/17/2018 更新时间:5/17/2018 访问量:453

问:

我使用 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;

有人可以帮我解决这个问题吗?

php xml dom html 解析

评论


答:

0赞 Sean Munson 5/17/2018 #1

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

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

评论

1赞 Nigel Ren 5/17/2018
这更像是一种评论,答案比提出问题更能说明问题所在。
0赞 Kamil Janicki 5/17/2018
我的天啊!我感到很惭愧 - 我忘记了PHP的基本规则,即“双引号”之间的字符串被解释,符号之间的字符串被innored。非常感谢!