我目前将文本文件存储在服务器中,这些文件是通过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("'", "'", 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('我得到:
“” $('。noteContent')。append('
A.(这里切成脚本)Capo。
');“;
答案 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>";