В настоящее время я храню текстовые файлы на сервере, эти файлы написаны через веб-интерфейс.При этом вы также можете изменять и удалять их.Каждый раз, когда в файле происходит разрыв строки, php не печатает его как текст, но вместо этого разбивает скрипт на строки.Как я могу это исправить?
Я использую php 7.3 и apache2 на моем сервере (Ubuntu Disco).Я пытался заменить разрывы строк в файле (тег br, если я его на самом деле поместил, он считается html xD) при печати содержимого и восстановлении \ n обратно, когда пользователь изменил примечание, но сначала я не получил егона работу, во-вторых, мне было интересно, есть ли более эффективный способ сделать это.
Вот как я храню файлы:
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;
}
Это содержание образцафайл: "А. (перевод строки) Капо."Затем я читаю содержимое файла:
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>
Infact бросает JavaScript: SyntaxError: '' строковый литерал содержит неэкранированный разрыв строки (Firefox) Uncaught SyntaxError: неверный или неожиданный токен (Chrome)
Я ожидаю вывод:
$(».noteContent '). присоединять ('А. (разрыв строки?) Капо.«);
Я получаю: "$ ('. NoteContent'). Append ('А. (сценарий нарезан здесь) Капо.«);";