【问题标题】:PHP Read File Line by LinePHP 逐行读取文件
【发布时间】:2016-11-22 19:57:45
【问题描述】:

我正在尝试逐行读取文本文件,但它会将行截断到所有空格都减少为一个空格的位置。有没有办法在不截断多余空格的情况下读取文件?

        # read file
        $myfile = fopen($target_file, "r") or die("Unable to open file!");
        while(!feof($myfile)) {

            # add line to array
            $line[$linenum] = fgets($myfile, 100);

            # display line
            echo $line[$linenum] . "</br></br>";

            # increment counter
            $linenum = $linenum + 1;

        }

【问题讨论】:

  • 您正在输出 html。浏览器会将多个空格折叠成一个空格。那不是php的问题。那是你的显示环境。要么使用&lt;pre&gt;,要么使用空格-> 字符串转换。并注意空格被 NOT 截断。他们还在那里。这是你的浏览器在骗你。做一个“查看源代码”,你会看到它们。
  • 如@MarcB 所述。要么使用&lt;pre&gt;——虽然这有一点控制台类型的格式,或者如果这是一个问题,你总是可以使用不间断空格&amp;nbsp;
  • 无论如何,你有一个错字:将&lt;/br&gt;替换为&lt;br /&gt;

标签: php string file fopen fgets


【解决方案1】:

也许您可能想尝试使用 file_get_contents()preg_split()foreach Loop 和 conditional logic 的组合的另一种方法。下面的注释代码摘录演示了如何:

    <?php

        // THE FILE TO BE READ:
        $targetFile             = __DIR__ . "/some-file.txt";

        // VEER OFF THE USUAL FILE PROCESSING FUNCTIONS... GO NUTS ;-)
        // GET THE CONTENTS OF THE FILE & STORE IT IN A VARIABLE (IF IT EXISTS)
        $strFileContents        = null;
        $arrFileLines           = array();
        if(file_exists($targetFile)){
            $strFileContents    = file_get_contents($targetFile);
        }

        // EVERY LINE IN A FILE IS TERMINATED BY A NEW LINE CHARACTER (\n): WE KNOW THAT
        // SO WE SPLIT THE CONTENTS OF THE FILE USING THIS KNOWLEDGE...
        if(!is_null($strFileContents)){
            $arrFileLines   = preg_split("#\n#", $strFileContents);

            // NOW LOOP THROUGH EACH LINE AND ECHO THE CONTENT...
            if(!empty($arrFileLines)){
                foreach($arrFileLines as $iLineNumber=>$strLineText){
                    echo $strLineText . "<br /><br />";
                }
            }
        }

希望这能提供一个替代方案...

干杯,祝你好运......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-17
    • 2014-06-21
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多