PHP字符串未串联

时间:2019-04-19 02:07:49

标签: php

我正在使用自定义行定界符逐行读取PHP中的文件,但在将行字符连接回字符串后遇到困难。

$newhtml = "";
if ($handle) {
          while (($line = stream_get_line($handle, 4096, "</br>")) !== false) 
          {
            $newhtml = "{$line}{$newhtml}" . "</br>";
          }
          echo $newhtml;
          fclose($handle);

我希望文件的每一行出现在不同的行上,但是该标记甚至没有显示在开发控制台中。

2 个答案:

答案 0 :(得分:0)

实际上使用下面的现有代码块

while (($line = stream_get_line($handle, 4096, "</br>")) !== false) {
    $newhtml = "{$line}{$newhtml}" . "</br>"; // problem happening here with = 
}

每次while循环迭代都将覆盖$newhtml值。因此,在迭代结束后,只会得到最后一个值。据我了解,您需要将每一行连接到$newhtml变量。为此,只需像

这样修改
$newhtml = "{$line}{$newhtml}" . "</br>";

$newhtml.= $line."</br>"; // with dot before = 

在等号前查找一个多余的点(.),然后再次删除不必要的{$ newhtml}变量

答案 1 :(得分:0)

从给出的代码中,我可以猜到要将最后一行放在第一行,可以为此使用数组:

<?php
if ($handle) {
    $lines = [];
    while (($line = stream_get_line($handle, 4096, "</br>")) !== false) 
    {
        $lines[] = $line;
    }
    $reversed = array_reverse($lines);
    echo join('<br>' $reversed);
    fclose($handle);
}

但是,如果您只想显示文件中的行,则只需简化代码即可:

<?php
if ($handle) {
    $lines = [];
    while (($line = stream_get_line($handle, 4096, "</br>")) !== false) 
    {
        echo $line . '<br>';
    }
    fclose($handle);
}