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

Posted

技术标签:

【中文标题】在 html 文本区域中显示文件内容时出现换行问题 - javascript PHP【英文标题】:Line break issue when displaying file contents in html text area - javascript PHP 【发布时间】:2014-04-21 00:37:50 【问题描述】:

我正在尝试将文本文件的内容显示到文本区域元素中,但我遇到了换行符显示为 '\n' 而不是实际执行的问题。

<textarea id = "textArea" name = "textArea" data-ng-model="note.text"></textarea>

javascript 将文本添加到文本区域元素

var $promise=$http.post("http://localhost/php/findNotes.php", data); //send data to user.php
$promise.then(function(msg)

       document.getElementById("textArea").value = msg.data;

      );

获取文件内容的PHP文件

$note=json_decode(file_get_contents('php://input'));  //get note 
$noteId = ($note->noteId);  
$userId = ($note->userId); 

$filename = 'file://localhost/Library/WebServer/Documents/Notes/'.$userId.'/'.$noteId.'.txt';

if (file_exists($filename))   
  
  $file = fopen($filename, "r");  
  while (!feof($file))   
    
    $display = fgets($file, filesize($filename));  
    echo $display; 
    
  fclose($file);  
   
else   
  
  echo "Error occurred!";  
 

读取带内容的文件时

line1\nline2\n\nline4

文本区域显示完全相同的内容

但是,如果文件内容直接应用于 js 代码中的 textarea,那么换行符就可以完美地工作。

所以如果JS改成

document.getElementById("textArea").value ="line1\nline2\n\nline4";

那么文本区域的输出是正确的:

line1
line2

line4

希望得到任何帮助,似乎是从 PHP 接收到的文本格式有问题? 提前致谢

【问题讨论】:

【参考方案1】:

您需要将 ajax 的 \n 字符转义为 \\n

因此,在 findNotes.php 中回显 $display 之前,您应该插入:

$display=str_replace("\n", "\\n", $display);

【讨论】:

我认为正确的版本是 $display=str_replace("\\n", "\n", $display);但谢谢这有效。如果你编辑你的答案,我会接受它 很高兴听到您的问题得到解决。但是如果你想用第二个反斜杠转义 \n,我的代码是正确的。来自手册:mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &amp;$count ] ) 哦,由于某种原因,文本保持不变,除非我改变了 \\n 和 \n

以上是关于在 html 文本区域中显示文件内容时出现换行问题 - javascript PHP的主要内容,如果未能解决你的问题,请参考以下文章

在联系表单文本区域中获取换行符以显示在电子邮件中

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

在发布和重用值后,在文本区域中显示用换行符分隔的值

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

如何在文本区域中显示数组内容?

如何阻止 Chrome 在我的文本区域中添加额外的换行符?