Избавление от \ r \ n строк - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть форма, в которую я ввел символ новой строки, который выглядел правильно, когда я его вводил, но когда данные теперь извлекаются из базы данных, вместо пробела я получаю строку \ n \ r, которая отображается.

Я пытаюсь сделать это:

$hike_description = nl2br($hike_description);

Но это не работает.Кто-нибудь знает, как это можно исправить?Я использую PHP.И вот страница, где это происходит.Смотрите раздел описания страницы: http://www.comehike.com/hikes/scheduled_hike.php?hike_id=130

Спасибо, Алекс

Ответы [ 4 ]

2 голосов
/ 28 февраля 2011

Кто-нибудь знает, как это можно исправить?

Конечно. Ваш код выполняет ненужное экранирование, скорее всего, перед добавлением текста в базу данных.
Поэтому вместо того, чтобы заменить его обратно, вы должны найти этот вредоносный код и избавиться от него.

1 голос
/ 28 февраля 2011

Это означает, что у вас есть, вероятно, простой текст '\ n \ r' строк в БД.

Попробуйте санировать вывод БД перед отображением:

$sanitized_text = preg_replace('/\\[rn]/','', $text_from_db);

(только предположение).

Приложение :

Конечно, как Кол.Шрапнель указал, что с содержимым базы данных что-то принципиально не так (или, по соглашению, он используется таким образом, и вы этого не знаете).

На данный момент вы частично исправили симптом , но было бы гораздо лучше найти причину, по которой эти экранированные символы вообще присутствуют в базе данных.

С уважением

rbo

0 голосов
/ 28 февраля 2011
$hike_description = str_replace(array('\n','\r'),'',$hike_description);

Возможно, вы захотите ознакомиться с различиями между одинарной и двойной кавычками в PHP: http://php.net/manual/en/language.types.string.php

0 голосов
/ 28 февраля 2011

Вы можете использовать str_replace для очистки ввода.

$hike_description = nl2br(str_replace("\r\n", "\n", $hike_description));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...