将文件另存为TXT文件并在PHP中以相同格式打开文件

时间:2013-03-06 15:16:43

标签: php file

我有以下php文件,它接受一些表单值并写入文本文件并创建一个易于查看的格式:

$filename = "blah.txt"; #Must CHMOD to 666, set folder to 777
$text = "\n" . str_pad($fname, 30) . "" . str_pad($lname, 30) . "" . str_pad($tdate, 20) . "" . str_pad($ydept, 30) . "" . str_pad($percentage, 0) . "%";

$fp = fopen ($filename, "a"); # a = append to the file. w = write to the file (create new if doesn't exist)
if ($fp) {
    fwrite ($fp, $text);
    fclose ($fp);
    #echo ("File written");
}
else {
    #echo ("File was not written");
}

已创建的文本文件具有预格式,如下所示:

                        @@@@@@ CLINICAL EXAM @@@@@@

First Name                    Last Name                     Date Taken          Department                    Percentage
==========                    =========                     ==========          ==========                    ==========

正在编写新记录时,它看起来像这样:

                        @@@@@@ CLINICAL EXAM @@@@@@

First Name                    Last Name                     Date Taken          Department                    Percentage
==========                    =========                     ==========          ==========                    ==========

Lolll                         Pelol                         02/13/13            Nursing                       92%
Catger                        Powhytr                       02/13/13            Nursing                       92%

当新用户参加考试时,它将继续附加到现有文件。 我想设置一个身份验证,因此它需要用户名/密码来查看文件并保留格式。我可以使用include()设置身份验证;在php文件顶部读取文本文件的方法。我有以下代码读取文件:

 <?php
    $filename = "blah.txt";
    $file = $filename;
    $contents = file($file); 
    $string = implode("<br>", $contents); 
    echo "<pre>" . $string . "</pre>";
    echo "<br></br>";
?>

显示以下内容:

@@@@@@ CLINICAL EXAM @@@@@@ 

First Name Last Name Date Taken Department Percentage 
========== ========= ========== ========== ========== 

Lilll Pelol 02/13/13 Nursing 92% 
Catger Powhytr 02/13/13 Nursing 92%

我喜欢做的是显示它保存的格式,以便让用户可以阅读。我怎么能做到这一点? 我正在尝试这样做,因为在网络上保留一个文本文件使每个人都可以看到它,这是一个安全问题。

1 个答案:

答案 0 :(得分:3)

如果要将文件输出到浏览器,则必须在文件内容周围使用<pre>...</pre>(或者使用font-family:monospace; white-space:pre的元素),否则空格将被折叠。

请注意原始代码中. "" .是无操作,因此可以删除,只留下.

此外,我建议这样做而不是所有str_pad次来电:

$text = sprintf("\n%-30s%-30s%-20s%-30s%s%%",$fname,$lname,$tdate$ydept,$percentage);