Сохранить возврат каретки в тексте из ‹pre› после синтаксического анализа

Для этой функции я использую библиотеку Simple html dom (http://simplehtmldom.sourceforge.net/).

Я хотел бы проанализировать содержимое предварительного тега веб-сайта, для которого я использую этот код:

    <?php include '/libraries/simple_html_dom.php' ?>
    <?php
    // Create DOM from URL or file
    $html = file_get_html('testing.html');

     // Find the Text
    foreach($html->find('pre') as $element) 
           echo '<p>' . $element . '<p>';      
    ?>

Это содержимое файла «testing.html»:

    <html>
    <head>
    </head>
    <body bgcolor="#FFFFFF">
    <pre>
    am.o                 V      1 1 PRES ACTIVE  IND 1 S    
    amo, amare, amavi, amatus  V   [XXXAO]  
    love, like; fall in love with; be fond of; have a tendency to;
    am.as                N      1 1 ACC P F                 
    ama, amae  N  F   [XXXDO]    lesser
    bucket; water bucket; (esp. fireman's bucket);
    am.as                V      1 1 PRES ACTIVE  IND 2 S    
    amo, amare, amavi, amatus  V   [XXXAO]  
    love, like; fall in love with; be fond of; have a tendency to;
    </pre>
    </body>
    </html>

Как видите, в предварительном тексте есть возвраты каретки, которые я хочу сохранить в выводе. На данный момент это вывод парсера:

  am.o                 V      1 1 PRES ACTIVE  IND 1 S      amo, amare, amavi, amatus  V   [XXXAO]    love, like; fall in love with; be fond of; have a tendency to;  am.as                N      1 1 ACC P F                   ama, amae  N  F   [XXXDO]    lesser  bucket; water bucket; (esp. fireman's bucket);  am.as                V      1 1 PRES ACTIVE  IND 2 S      amo, amare, amavi, amatus  V   [XXXAO]    love, like; fall in love with; be fond of; have a tendency to;  

Как бы я это сделал?


person JBithell    schedule 21.06.2014    source источник
comment
Попробуйте nl2br()   -  person Funk Forty Niner    schedule 21.06.2014
comment
Вы не можете ожидать сохранения пробелов с помощью простого html dom. Используйте функции preg, если вам это нужно.   -  person pguardiario    schedule 22.06.2014


Ответы (4)


используйте 1_

person poostchi    schedule 21.06.2014

Замените символы новой строки тегом BR. Для этого вы можете использовать nl2br().

person Luke Peterson    schedule 21.06.2014
comment
Есть ли простой способ реализовать это? - person JBithell; 21.06.2014
comment
Да, echo '<p>' . nl2br($element) . '<p>'; - person Luke Peterson; 21.06.2014
comment
Попробуйте echo '<p>' . str_replace(array("\r\n", "\r", "\n"), '<br />', $element) . '<p>'; - person Luke Peterson; 21.06.2014
comment
Извините - не повезло! @ЛюкПетерсон - person JBithell; 21.06.2014

Вы должны указать текстовый узел:

foreach($html->find('pre') as $element) 
           echo '<p>' . $element->innertext . '<p>';  
person CMPS    schedule 21.06.2014
comment
@JBithell, можешь попробовать print_r($element); - person CMPS; 21.06.2014
comment
Вывод составил более 30 000 символов: ivate] =› simple_html_dom Object RECURSION )) [parent] =› [_] =› Array ( [0] =› -1 [1] =› 12 ) [tag_start] =› 0 [dom:simple_html_dom_node:private] =› simple_html_dom Object RECURSION ) [1] =› simple_html_dom_node Object ( [nodetype] =› 1 [tag] =› html [attr] = › Array ( ) [children] =› Array ( [0] =› simple_html_dom_node Object ( [nodetype] =› 1 [tag] =› он - person JBithell; 21.06.2014
comment
@JBithell, ты смог найти целевой текст где-нибудь в выводе? - person CMPS; 21.06.2014
comment
Да - Но все же одной строкой @Amir - person JBithell; 21.06.2014
comment
@JBithell, что ты имеешь в виду под одной строкой? - person CMPS; 21.06.2014
comment
Нет повторов картриджей @Amir - person JBithell; 21.06.2014

Оказывается, это было очень просто на самом деле! Простой HTML Dom не требовался, так как его можно было сделать без такой библиотеки:

$file = file_get_contents('testing.html');
$start = '<html>';
$end   = '<pre>';
$string = $file;
$whatwearelookingfor = strstr( substr( $string, strpos( $string, $start) + strlen( $start)), $end, true);
$parsedresult = str_replace($whatwearelookingfor,"",$file);
$parsedresult = str_replace("<html>","",$parsedresult);
$parsedresult = str_replace("</body></html>","",$parsedresult);
echo $parsedresult;

Он возвращает содержимое файла pre - Сохранение возвращается!

person JBithell    schedule 10.08.2014