Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有标记的PHP HTML简单DOM解析器_Php_Html - Fatal编程技术网

使用带有标记的PHP HTML简单DOM解析器

使用带有标记的PHP HTML简单DOM解析器,php,html,Php,Html,我使用的是简单的HTML DOM解析器PHP 我要分析的文档的部分源是 <pre> LINE 1 LINE 2 LINE 3 </pre> <?php $lines = file('myfile.txt'); foreach ($lines as $line_num => $line) { echo ($line); } ?> $dom = new Zend\Dom\Query($html_string); $result

我使用的是简单的HTML DOM解析器PHP

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

<pre>

LINE 1

LINE 2

LINE 3

</pre> 
<?php

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

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

    echo ($line);

}

?>
$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);
}
结果是

1号线2号线3号线

但在web浏览器中,这些HTML代码正在显示

第1行

第2行

第3行

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

您想换行,对吗?以下方面应起作用:

<pre>
LINE 1

LINE 2

LINE 3
</pre>
编辑:原始代码的反向效果

您可以使用以下命令在每行回显文本:

在浏览器中输出:

第1行

第2行

第3行

文件内容:

PHP代码:

最初的答案,误解了OP的问题,但仍然是有用的代码

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

文件内容:

浏览器中的输出:第1行第2行第3行

PHP代码:


我不知道如何使用简单的HTMLDOM解析器,但我成功地使用了Zend的Dom查询包。以下代码用于维护pre元素内部文本的格式:

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)

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

e、 g

更改两个函数file_get_html和str_get_html

那么这个

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

及 这个

变成

裁判: 裁判:
谢谢,但是不行。每行不是数组的元素。因为$ret是一个变量。我误解了吗?啊,我明白了。我想你应该使用preg_split或str_split。如果子字符串的长度如示例中所示为六个字符,则可以这样做:$array=str_split$ret,7;现在你可以迭代数组,修剪它并添加换行符。@NeilGirardi看看我上面的答案。编辑比我原来的答案简单得多。如果你能用的话,很好。干杯Peace@Skippy根据您的编辑,我相信OP希望显示标签,因为它是文件内容的一部分。@Skippy没问题。我在问题标题中注意到了这一点。不客气:-cheers@Skippy看起来他不在这里。哦,好吧。你看了我的编辑吗?对不起,在你写这个答案之前,我编辑了这个问题,但是源代码被破坏了,请再检查一次这个问题。@user2014475哦,你想让它们一个接一个,是吗?不是紧挨着吗?@Skippy很高兴你能利用它。现在来做相反的事情lol@Skippy我想出了另一个解决方案,并将发布有关它的信息,谢谢Skippy@user2014475重新加载此页面以查看我的更改。让我知道这是否是你要找的。
<?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;

?>
$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);
}
$stripRN = false;
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)