Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Удаление \r\n из текста после mysql_real_escape_string()
Форумы портала PHP.SU » » Вопросы новичков » Удаление \r\n из текста после mysql_real_escape_string()

Страниц (2): [1] 2 »
 

1. eleon - 13 Ноября, 2013 - 10:18:40 - перейти к сообщению
Доброго дня.
Имею на сайте форму обратной связи (method="post").
Текст из поля textarea после запроса

имеет вид: блабла\r\nблабла\r\n
Не смог удалить \r\n ни с помощью str_replace, ни preg_replace.
Если же получать текст с помощью
CODE (htmlphp):
скопировать код в буфер обмена
  1. $txt=($_POST['txt']);

то проблем с \r\n нет.
Но, на мой взгляд, возникает проблема с безопасностью.
Как можно повоздействовать на текст после mysql_real_escape_string, чтоб имел читабельный вид (т. е. без \r\n)?
2. esterio - 13 Ноября, 2013 - 10:51:24 - перейти к сообщению
eleon
Наговорили, наговорили, и практически все не верно
eleon пишет:
Если же получать текст с помощью
$txt=($_POST['txt']);
то проблем с \r\n нет.

Конешно, если делать echo, то HTML пофигу на переносы строк, он их не отобразит
mysql_real_escape_string вообще-то не добавляет переносы строк
eleon пишет:
Не смог удалить \r\n ни с помощью str_replace, ни preg_replace.

лож. нужно "\r\n" заключать в двойные кавычки
Ну и напоседок, зачем вам texarea, если вам не нужны переносы строк, сделайте поле text и не парьтесь
3. eleon - 13 Ноября, 2013 - 11:21:46 - перейти к сообщению
esterio
Спасибо за оперативный ответ Улыбка
Цитата:
лож. нужно "\r\n" заключать в двойные кавычки
не работает, выдает:
Warning: preg_replace() [function.preg-replace]: Empty regular expression... .

Цитата:
... если делать echo....
не причем. Текст отправляется email и дальше читать там или в почтовом клиенте ...блабла\r\nблабла\r\n... не удобно.

Цитата:
...зачем вам texarea...

Текста бывает много и люди любят пользоваться в этом случае клавишей enter, поэтому textarea нужна.
4. Ch_chov - 13 Ноября, 2013 - 11:38:10 - перейти к сообщению
eleon пишет:
Цитата:
лож. нужно "\r\n" заключать в двойные кавычки
не работает, выдает:
Warning: preg_replace() [function.preg-replace]: Empty regular expression.

Если у вас не работает то что работает у других, то не забывайте показать свой код.

\r\n можно удалять с помощью trim
5. esterio - 13 Ноября, 2013 - 11:45:39 - перейти к сообщению
eleon пишет:
Warning: preg_replace() [function.preg-replace]: Empty regular expression... .

Значит у Вас неверное регулярное выражение, и ето не значит что так нельзя
eleon пишет:
Текст отправляется email и дальше читать там или в почтовом клиенте ...блабла\r\nблабла\r\n... не удобно.

Потому что по дефолту там text/plain, а вам нужно text/html
Ch_chov пишет:
\r\n можно удалять с помощью trim

trim удалит только вначале и в конце, но посередине оставит, так что не подходит
6. eleon - 13 Ноября, 2013 - 12:05:32 - перейти к сообщению
Ch_chov пишет:
eleon пишет:
Цитата:
лож. нужно "\r\n" заключать в двойные кавычки
не работает, выдает:
Warning: preg_replace() [function.preg-replace]: Empty regular expression.

Если у вас не работает то что работает у других, то не забывайте показать свой код.

\r\n можно удалять с помощью trim

CODE (htmlphp):
скопировать код в буфер обмена
  1. $txt1 = preg_replace("\r\n", "55", $txt);
выдает ошибку
CODE (htmlphp):
скопировать код в буфер обмена
  1. $txt1 = preg_replace("/\r\n/", "55", $txt);
не выдает ошибку, но и не удаляет \r\n
7. Ch_chov - 13 Ноября, 2013 - 12:06:54 - перейти к сообщению
Если \r\n в середине, то наверно нужно не удалять его а заменять на что то. Например, на пробелы.
Убрать слеши можно с помощью stripslashes, а для html формата перенос строк придется заменить на <br/>. См. nl2br.
8. esterio - 13 Ноября, 2013 - 12:10:24 - перейти к сообщению
eleon пишет:
$txt1 = preg_replace("/\\r\\n/", "55", $txt);

Нужно еще один слеш добавить, если не помождет спробуйте еще один. Счас точно не припомню сколько нужно
Ch_chov
Не совсем то что нужно ТС
9. Ch_chov - 13 Ноября, 2013 - 12:30:25 - перейти к сообщению
Почему не то? У него в $txt уже экранированные символы.

p.s.
10. eleon - 13 Ноября, 2013 - 12:36:38 - перейти к сообщению
Ch_chov пишет:
Если \r\n в середине, то наверно нужно не удалять его а заменять на что то. Например, на пробелы.
Убрать слеши можно с помощью stripslashes, а для html формата перенос строк придется заменить на <br/>. См. nl2br.

К сожалению, у меня не получилось после
ни удалить, ни заменить\r\n на что-то... пока не воспользовался Вашим, esterio, советом добавить слэшей Улыбка.
CODE (htmlphp):
скопировать код в буфер обмена
  1. $txt1 = preg_replace("/\\\\r\\\\n/", "<br />", $txt);

прокатило!
(2 дня бился)
СПАСИБО!
11. Ch_chov - 13 Ноября, 2013 - 13:14:27 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $txt=mysql_real_escape_string($_POST['txt']);
  2. $txt1 = preg_replace("/\\\\r\\\\n/", "<br />", $txt);


Т.С, а можешь обяснить зачем вообще тут mysql_real_escape_string ?
(Добавление)
Кстати, не забудь теперь еще и ковычки от слешей очистить Улыбка
12. eleon - 13 Ноября, 2013 - 13:28:30 - перейти к сообщению
Ch_chov пишет:
Т.С, а можешь обяснить зачем вообще тут mysql_real_escape_string ?

Везде пишут "чтобы обезопасить данные, вставляемые в запрос".

Ch_chov пишет:
Кстати, не забудь теперь еще и ковычки от слешей очистить


Можно уточнить про кавычки? Какие и где?
13. DelphinPRO - 13 Ноября, 2013 - 13:33:17 - перейти к сообщению
Радость
а не проще было сначала очистить переводы строк, а потом заэскейпить, и не мучаться?
Тем более их не очищать следует а хотя бы преобразовать в <br> (ну это уже другой вопрос)


PHP:
скопировать код в буфер обмена
  1. $txt = str_replace("\r\n", "", $_POST['txt']);
  2. // $txt = str_replace(array("\r", "\n"), "", $_POST['txt']); // Возможно так будет надежнее, с учетом всех вариантов
14. Ch_chov - 13 Ноября, 2013 - 13:40:39 - перейти к сообщению
eleon пишет:
Везде пишут "чтобы обезопасить данные, вставляемые в запрос".

А где запрос то? Покажи весь код.

eleon пишет:
Можно уточнить про кавычки? Какие и где?

Кавычки, которые пользователь может вставлять вместе с текстом в textarea
15. eleon - 13 Ноября, 2013 - 13:46:30 - перейти к сообщению
DelphinPRO пишет:
а не проще было сначала очистить переводы строк, а потом заэскейпить, и не мучаться?
Тем более их не очищать следует а хотя бы преобразовать в <br> (ну это уже другой вопрос)

Не проще.
Т.к проблемы с удалением/заменой экранированных символов начинаются как раз после mysql_real_escape_string;

 

Powered by ExBB FM 1.0 RC1