对于文件的每个换行符,将文件内容打印到脚本换行符中

时间:2019-05-16 13:41:15

标签: javascript php post file-get-contents

我目前将文本文件存储在服务器中,这些文件是通过Web gui写的。这样您还可以修改和删除它们。每次文件中有换行符时,php都不会将其打印为文本,而是将脚本分成几行。我该如何解决?

我正在服务器(ubuntu迪斯科)上运行php 7.3和apache2。 我尝试在打印内容并在用户修改便笺时还原\ n时用(br标签,如果我实际将其视为html xD)替换文件的换行符,但是首先我没有得到它工作,第二,我想知道是否有更有效的方法来做到这一点。

这是我存储文件的方式:

var content = $("#writeNoteContent").val(); //this is a text area
data = {
    //other parameters
    'content': content,
    'type': 'write'
  }
  $.post(ajaxurl, data, function(response) {
    response = JSON.parse(response);
    if (response == "done") {
    } else {
      error(response);
    }
  });
function writeNote($conn, String $content) {
      //insert values into mysql table (I don't think it's relevant)
      $noteFile = fopen("../notedb/$user/$title.txt", "w+");
      if ($noteFile == false) {
        die();
      }
      fwrite($noteFile, $content);
      fclose($noteFile);
      return true;
  }

这是示例文件的内容: “ A.(换行符) 投诉警察课。” 然后我阅读了文件内容:

  function getNote($conn, String $title) {
    $title = str_replace(" ", "_", $title);
    try {
      $query = $conn->prepare("SELECT dir FROM note WHERE title = :ttl");
      $query->bindParam(":ttl", $title);
      $query->execute();
      $query->setFetchMode(PDO::FETCH_ASSOC);
      $dir = $query->fetchAll();
      $dir = $dir[0]["dir"];
      return file_get_contents("../$dir");
    } catch (PDOException $e) {
      PDOError($e);
      return false;
    } finally {
      $conn = null;
    }
  }

当我使用以下内容打印内容时:

$fc = str_replace("'", "&#39", getNote(connectDb(), $title));
        echo "<script>$('.noteContent').append('<br/><span class=spawnContent>" . $fc . "</span><br/>');</script>";

脚本显示如下(它实际上被切成两部分):

<script>$('.noteContent').append('<br/><span class=spawnContent>A.
Capo.</span><br/>');</script>

实际JavaScript抛出: SyntaxError:''字符串文字包含未转义的换行符(Firefox) 未捕获到的SyntaxError:无效或意外的令牌(Chrome)

我希望输出:

$('。noteContent')。append('
A.(换行?)Capo。
');

我得到: “” $('。noteContent')。append('
A.(这里切成脚本)Capo。
');“;

1 个答案:

答案 0 :(得分:0)

尝试将\ n和/或\ r替换为空,如下所示:

$crlf   = array("\n", "\r");
$fc = str_replace($crlf, '', $fc);
echo "<script>$('.noteContent').append('<br/><span class=spawnContent>" . $fc . "</span><br/>');</script>";