У меня есть поле textarea, которое вставлено в базу данных mysql, которая может содержать разрывы строк. Данные текстовой области случайно прошли через две партии функций mysql_real_escape_string. Поэтому бит разрыва строки данных поля теперь сохраняется как «\ r \ n» вместо фактической новой строки, так как он был дважды экранирован?
Теперь, когда вы вернетесь в поле textarea html для редактирования, вместо новой строки отображается «\ r \ n».
Вопрос: Как исправить ситуацию, чтобы они снова стали новыми линиями?
Вы, вероятно, избегаете использование mysql_real_escape строки дважды – как входной фильтр (неверный!) И как подготовка данных SQL. Вы должны избавиться от первого.
Или один раз, как входной фильтр, а затем используйте подготовленные инструкции для запроса. Избавьтесь от первого.
Вы должны обязательно исправить ситуацию, которая ведет к двойному экранированию.
Быстрое исправление для уже обработанного содержимого
str_replace("\\r\\n", "\r\n");
Чтобы вернуть оригинал, вы должны сделать обратное. Создайте сценарий, который выберет существующие строки из таблицы и не ускользает от ввода, обновите значение столбца. Это, по сути, будет храниться в одном (правильно) экранированном входе.
Попробуйте этот код
$tval = str_replace("\\r\\n", "\r\n",mysql_real_escape_string(trim($tval)));