正确使用PHP_EOL以及如何在读取文件时摆脱字符数

时间:2018-04-26 07:17:56

标签: php html

我正在尝试编写一个函数,其中一个文本字符串用时间戳写入文件" text2.txt",我希望每个条目都在一个新行上,但PHP_EOL看起来不像为我工作。字符串只是写在同一行,而不是写入每个字符串的新行。

有没有人能给我一些关于如何在每次激活函数时强制脚本写入新行的指针或想法? 某种例子将受到高度赞赏。

提前谢谢。

<?php
  if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['sendmsg']))
  {
    writemsg();
  }

  function writemsg()
  {
    $txt = $_POST['tbox'];
    $file = 'text2.txt';
    $str = date("Y/m/d H:i:s",time()) . ":" . $txt;
    file_put_contents($file, $str . PHP_EOL , FILE_APPEND );
    header("Refresh:0");
  }
?>

另外,我想在使用以下代码时删除字符串末尾的字符数:

<?php
  echo readfile("text2.txt");
?>

是否有任何方法可以禁用字符计数或以其他方式读取文本文件,以便它不显示字符数?

2 个答案:

答案 0 :(得分:3)

  

有没有人能给我一些关于如何在每次激活函数时强制脚本写入新行的指针或想法?某种例子将受到高度赞赏。

根据您发布的代码,我非常确定换行符已正确附加到您要写入文件的文本行中。

尝试在文本编辑器上打开文件text2.txt以获得明确的确认。

请注意,如果您将text2.txt作为HTML文档的一部分插入换行符,则不会导致浏览器在呈现的HTML 中出现换行符。 / p>

您必须将它们转换为换行符<br/>

为了做到这一点

<?php
    echo nl2br( file_get_contents( "text2.txt" ) );
?>

使用file_get_contents也可以解决字符数显示问题。

关于答案中代码中使用的this example你(错误)的说明。

Accordind to documentation

  

读取文件并将其写入输出缓冲区。

     

[...]

     

返回从文件中读取的字节数。如果发生错误,则返回 FALSE ,除非该函数被调用为@readfile(),否则将打印一条错误消息。

readfile读取文件并且将内容发送到输出缓冲区时,您将拥有:

$bytes_read = readfile( "text2.txt" );

没有 echo

但是在你的情况下你需要操作文件的内容(用等效的html标签替换换行符),所以使用file_get_contents更合适。

答案 1 :(得分:0)

要在文本中添加新行,只需添加"\r\n"(必须使用双引号)。 请注意如果您尝试阅读此文件并输出到HTML,则所有新行(无论是什么组合)都将替换为简单空格,因为HTML中的新行是<br/>。使用nl2br($text)将新行转换为<br/>

阅读文件时使用file_get_contents($file);