nl2br не работает с итоговыми переводами строки "\ n" - PullRequest
0 голосов
/ 18 мая 2011

Я собираю краткое изложение события в PHP. Дело в том, что в сводке содержатся разрывы строк \n, и я хочу заменить их на <br> при вставке событий.

В моем PHPMyAdmin после экранирования сводки я вижу символы \n, но без экранирования сводки я не вижу символы \n. Однако без побега я могу видеть реальные реальные разрывы строк. Мне нужно избежать краткого описания, чтобы сделать мою базу данных безопасной. Использование функции nl2br не работает в обоих случаях? Почему?

КОД:

//without escaping
$title = $vevent->getProperty('summary');//Object method which retrieves the summary of an event 
$title = nl2br($title);

//with escaping
$title = mysql_real_escape_string($vevent->getProperty('summary'));
$title = nl2br($title);

Ответы [ 2 ]

0 голосов
/ 18 мая 2011

Вы можете сделать это наоборот:

//with escaping
$title = nl2br($title);
$title = mysql_real_escape_string($vevent->getProperty('summary'));

Но вам не нужно вызывать nl2br перед тем, как вставить в базу данных. Лучше сделать nl2br, когда вы выводите данные в браузер. Таким образом, вы сохраняете фактические данные в базе данных (которые позже можно использовать в другом контексте) и форматируете их в HTML перед выводом.

0 голосов
/ 18 мая 2011

Хм, а как насчет чтения страницы справочника, мой друг? http://php.net/manual/en/function.mysql-real-escape-string.php говорит

mysql_real_escape_string () вызывает библиотечную функцию MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: \ x00, \ n,

Ваши разрывы строк уже экранированы SQL. так что надо nl2br раньше.

И обычную рутину, которую я даю всем: почему вы используете расширение mysql в 2011 году? Это вышло из моды полвека назад. Используйте mysqli или PDO и подготовленные операторы, тогда вам не нужно беспокоиться о побеге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...