Горячее добавление новой строки \ r \ n и вкладок в PHP DOM Document output? - PullRequest
0 голосов
/ 17 мая 2018

Я делаю простой парсер для HTML, используя PHP DOM, и у меня проблема с новыми строками (\ 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;, но это не работает.

Кто-нибудь может помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 17 мая 2018

Вам нужно использовать двойные кавычки для интерпретации escape-последовательностей.

Вы пытались использовать двойные кавычки "", а не одинарные кавычки ''?

...