使用 php 读取文件时删除文本区域中的换行符

Posted

技术标签:

【中文标题】使用 php 读取文件时删除文本区域中的换行符【英文标题】:Removing Newline in a textarea when reading file with php 【发布时间】:2017-07-27 19:40:11 【问题描述】:

我需要一个带有文本区域的表单,它保存到一个文本文件中。此表单应在页面刷新时从文件中加载文本,以便可以更改文本。几乎一切正常,但是当我点击发送并且页面重新加载时,我在 textarea 中得到一个换行符。文本保存在末尾没有换行符。问题是每次我保存文件时,当我忘记删除它时,最后都会得到一个新的换行符。我已经尝试在文本区域中显示之前修剪文本,但这并不能解决问题。在我看来,这是 textarea 的一种奇怪行为,或者我只是错过了一些东西。也许你们可以帮助我。

这是我的代码:

<?php
if($_POST['text'])
    $file = fopen("test.txt","w+");
    fwrite($file, $_POST['text']);
    fclose($file); 

?>

<form action="<?=$PHP_SELF?>" method="POST">
<textarea name="text" COLS=60 ROWS=8 wrap=hard>
<?php
$lines = file('test.txt');
foreach($lines as $line) 
    echo $line;

?>
</textarea>
<br>
<input type="submit" name="button">
</form>

PS:我喜欢这个社区,并在这里解决了我的许多问题。这是我第一次亲自问你。我对 php 很陌生,所以请温柔:D

【问题讨论】:

【参考方案1】:

您只需删除 &lt;/textarea&gt; 之前的换行符,因为您的浏览器会将其作为 textarea 标记中的换行符。

【讨论】:

就像我说的我已经尝试过修剪功能。我需要保留换行符。只是在 textarea 末尾添加的那个不应该在那里。即使我使用 trim(readfile("test.txt")) 文本区域在换行符处显示光标,而不是在文本末尾。 好的,你可以剪掉最后一行。我更新了我的答案以满足您的需求 已经尝试过了,但它不起作用:( php 代码似乎是正确的,但在 textarea 的末尾仍然创建了一个换行符。 您的文件末尾可能有一个尾行。尝试var_dump($lines); 显示正在发生的事情。 &lt;pre class='xdebug-var-dump' dir='ltr'&gt; &lt;small&gt;/var/www/html/tmp/src_4c7d4e9479fa0a9ddb02f835d5ac3240:21:&lt;/small&gt; &lt;b&gt;array&lt;/b&gt; &lt;i&gt;(size=1)&lt;/i&gt; 0 &lt;font color='#888a85'&gt;=&gt;&lt;/font&gt; &lt;small&gt;string&lt;/small&gt; &lt;font color='#cc0000'&gt;'TEST'&lt;/font&gt; &lt;i&gt;(length=4)&lt;/i&gt; &lt;/pre&gt;TEST 这是我的 var_dump,没有尾随行。

以上是关于使用 php 读取文件时删除文本区域中的换行符的主要内容,如果未能解决你的问题,请参考以下文章

在 html 文本区域中显示文件内容时出现换行问题 - javascript PHP

使用 JS 读取文件并在文本区域中显示其内容 [重复]

文本区域中的换行符

禁用 HTML 文本区域中的换行符

如何在 html 文本区域中逐行读取文本? [复制]

Firestore 不保存文本区域中的换行符