\r\n отображается в <textarea> после извлечения из базы данных

Для начала данные взяты из текстовой области.

Линия1 Линия2 Линия3 и т. Д.

Он передается через эту функцию перед сохранением в БД (я открыт для лучших решений, но если PDO - один из них, я не понимаю его и пока не заставил его работать)

function test_input($data) {
    global $conn;

    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    $data = mysqli_real_escape_string($conn, $data);

    return $data;
}

Это мой способ предотвращения инъекций (не мой, а способ, который я обнаружил, который до сих пор работал отлично, и это дает мне эту проблему с переносами строк и текстовыми сообщениями)

Я пытаюсь извлечь данные из БД и отобразить их в текстовой области, и вместо перевода строки отображается \r\n. Он хранится в БД с разрывами строк (я не вижу \r\n, но вместо этого я вижу данные в новой строке)

Я пробовал nl2br, пробовал html_entity_decode, пробовал от str_replace \r\n до br (а затем он просто показывает литерал br вместо \r\n).

из исследования, которое я нашел на этом сайте, это то, что я делаю с ним до того, как сохранить его в БД, что и является причиной этого, но ни одно из решений не сработало для меня.

Помогите.

3 ответа

Решение

Заменить \r\n в тексте с &#13;&#10; прежде чем поместить его в текстовую область и показать его пользователю.

Это сработало для меня.

Попробуйте это может помочь полный

<?php 
function nl2br2($string) { 
$string = str_replace(array("\r\n", "\r", "\n"), "<br />", $string); 
return $string; 
} 
?> 

HTML против php и windows (возврат каретки и перевод строки). Что происходит, когда у вас есть поле значений в буфере. Буфер может приходить с устройства ввода / вывода или отправляться на него. Возможно, что внутри буфера необходимо заменить строку, соответствующую устройству. Для извлечения данных из БД построчно или из API-запроса SQL потребуется регулярное выражение и операция подстановки, повторяющаяся до тех пор, пока не будут изменены все выражения. Пуленепробиваемая проверка ввода до того, как он попадет в поле БД, всегда является хорошей идеей. Я столкнулся с проблемой печати, которая была вызвана дополнительными данными (escape-последовательностями), которые заставили принтеры остановиться и ждать последовательности сброса. Никто не понимал, почему задания на печать не печатались примерно 12 месяцев. Я написал фильтр и добавил его в интерфейс принтеров. Задача решена

Другие вопросы по тегам