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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Удаление \r\n из текста после mysql_real_escape_string()

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: Не заменяются \r\n после запросса mysql_real_escape_string()
eleon
Отправлено: 13 Ноября, 2013 - 10:18:40
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Доброго дня.
Имею на сайте форму обратной связи (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)?

(Отредактировано автором: 13 Ноября, 2013 - 12:13:30)

 
 Top
esterio
Отправлено: 13 Ноября, 2013 - 10:51:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




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

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

лож. нужно "\r\n" заключать в двойные кавычки
Ну и напоседок, зачем вам texarea, если вам не нужны переносы строк, сделайте поле text и не парьтесь
 
 Top
eleon
Отправлено: 13 Ноября, 2013 - 11:21:46
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




esterio
Спасибо за оперативный ответ Улыбка
Цитата:
лож. нужно "\r\n" заключать в двойные кавычки
не работает, выдает:
Warning: preg_replace() [function.preg-replace]: Empty regular expression... .

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

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

Текста бывает много и люди любят пользоваться в этом случае клавишей enter, поэтому textarea нужна.

(Отредактировано автором: 13 Ноября, 2013 - 11:31:03)

 
 Top
Ch_chov
Отправлено: 13 Ноября, 2013 - 11:38:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




eleon пишет:
Цитата:
лож. нужно "\r\n" заключать в двойные кавычки
не работает, выдает:
Warning: preg_replace() [function.preg-replace]: Empty regular expression.

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

\r\n можно удалять с помощью trim
 
 Top
esterio
Отправлено: 13 Ноября, 2013 - 11:45:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




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 удалит только вначале и в конце, но посередине оставит, так что не подходит
 
 Top
eleon
Отправлено: 13 Ноября, 2013 - 12:05:32
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




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
 
 Top
Ch_chov
Отправлено: 13 Ноября, 2013 - 12:06:54
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Если \r\n в середине, то наверно нужно не удалять его а заменять на что то. Например, на пробелы.
Убрать слеши можно с помощью stripslashes, а для html формата перенос строк придется заменить на <br/>. См. nl2br.
 
 Top
esterio
Отправлено: 13 Ноября, 2013 - 12:10:24
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




eleon пишет:
$txt1 = preg_replace("/\\r\\n/", "55", $txt);

Нужно еще один слеш добавить, если не помождет спробуйте еще один. Счас точно не припомню сколько нужно
Ch_chov
Не совсем то что нужно ТС
 
 Top
Ch_chov
Отправлено: 13 Ноября, 2013 - 12:30:25
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




Почему не то? У него в $txt уже экранированные символы.

p.s.
 
 Top
eleon
Отправлено: 13 Ноября, 2013 - 12:36:38
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




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

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

прокатило!
(2 дня бился)
СПАСИБО!

(Отредактировано автором: 13 Ноября, 2013 - 12:42:42)

 
 Top
Ch_chov
Отправлено: 13 Ноября, 2013 - 13:14:27
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




PHP:
скопировать код в буфер обмена
  1. $txt=mysql_real_escape_string($_POST['txt']);
  2. $txt1 = preg_replace("/\\\\r\\\\n/", "<br />", $txt);


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


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Ch_chov пишет:
Т.С, а можешь обяснить зачем вообще тут mysql_real_escape_string ?

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

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


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

(Отредактировано автором: 13 Ноября, 2013 - 13:37:40)

 
 Top
DelphinPRO
Отправлено: 13 Ноября, 2013 - 13:33:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Радость
а не проще было сначала очистить переводы строк, а потом заэскейпить, и не мучаться?
Тем более их не очищать следует а хотя бы преобразовать в <br> (ну это уже другой вопрос)


PHP:
скопировать код в буфер обмена
  1. $txt = str_replace("\r\n", "", $_POST['txt']);
  2. // $txt = str_replace(array("\r", "\n"), "", $_POST['txt']); // Возможно так будет надежнее, с учетом всех вариантов


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Ch_chov
Отправлено: 13 Ноября, 2013 - 13:40:39
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2121
Дата рег-ции: Июль 2008  
Откуда: из города


Помог: 90 раз(а)




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

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

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

Кавычки, которые пользователь может вставлять вместе с текстом в textarea
 
 Top
eleon
Отправлено: 13 Ноября, 2013 - 13:46:30
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




DelphinPRO пишет:
а не проще было сначала очистить переводы строк, а потом заэскейпить, и не мучаться?
Тем более их не очищать следует а хотя бы преобразовать в <br> (ну это уже другой вопрос)

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

(Отредактировано автором: 13 Ноября, 2013 - 13:58:53)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB