-1

我正在使用简单的 HTML DOM 解析器 PHP。

我要解析的部分文档来源是

<pre>

LINE 1

LINE 2

LINE 3

</pre> 

这些代码定义为 $string

我写了那些 PHP 代码

$html = str_get_html($string);

$ret = $html->find('pre',0)->plaintext;

echo $ret;

结果是

线路 1 线路 2 线路 3

但在网络浏览器中,那些 HTML 代码正在显示

第 1 行

2号线

第 3 行


网络浏览器的显示是我想要的。如何在 PHP 中获得相同的结果?

4

4 回答 4

3

您需要在simple_html_dom.php 文件中将默认参数 $stripRN 设置为 false

例如

$stripRN = false;

更改两个功能file_get_html&str_get_html

所以这

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

变成

function file_get_html($url, $use_include_path = false, $context=null, $offset = -1, $maxLen=-1, $lowercase = true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

和这个

function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)

变成

function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=false, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT)
于 2015-11-08T15:23:49.343 回答
2

你想换行,对吗?以下应该有效:

<?php 
    foreach ($ret as $string) {
        echo "$string\n";
    }
于 2013-08-06T03:19:04.153 回答
1

编辑:原始代码的反向效果。

您可以使用以下内容在每一行上回显文本:

在浏览器中输出:

第 1 行

2号线

第 3 行

文件内容:

<pre>
LINE 1

LINE 2

LINE 3
</pre>

PHP代码:

<?php

$lines = file('myfile.txt');

foreach ($lines as $line_num => $line) {

    echo ($line);

}

?>

原始答案,误解了 OP 的问题,但仍然有用的代码。

您可以使用以下代码在一行中回显文本。

文件内容:

<pre>
LINE 1

LINE 2

LINE 3
</pre>

在浏览器中输出:LINE 1 LINE 2 LINE 3

PHP代码:

<?php

$lines_of_file = file("myfile.txt");
//Now $lines_of_file have an array item per each line

$file_content = file_get_contents("myfile.txt");
$file_content_separated_by_spaces = explode(" ", $file_content);

echo $file_content;

?>
于 2013-08-06T03:43:55.677 回答
0

我不知道如何使用 Simple HTML Dom Parser 来实现,但我使用 Zend 的 Dom Query 包成功了。以下代码用于维护pre元素内文本的格式:

$dom = new Zend\Dom\Query($html_string);
$results = $dom->execute('pre');
foreach ($results as $result) { // each $result is of type DOMElement
        echo $result->ownerDocument->saveXML($result);
}
于 2015-04-12T21:42:54.033 回答