Уцененная PHP-разметка - вывод html
У меня есть редактор WMD на моем сайте, и я храню уценку в БД. Но прежде чем отправить разметку в базу данных, я отфильтрую ее с помощью mysql_real_escape_string, например:
$to_database = mysql_real_escape_string($_POST['markdown']);
И это нормально. Но теперь я хочу показать это, поэтому я использую PHP Markdown (который конвертирует markdown в html). Но проблема в том, что он показывает мне \ r \ n и \ n вместо новых строк. Я попробовал функцию nl2br, но это не помогло. Даже если я не экранирую вывод (не конвертирую markdown в html и не использую htmlpurifier), я все равно получаю \ n вместо новых строк. Только когда я удаляю mysql_real_escape_string, это выглядит хорошо.
bbbbbbbbbbb nnnnnnnnn
2 ответа
Они преобразуются и больше не действуют как разрывы строк. Вы хотите заменить их:
$markdown = str_replace('\r\n','<br/>',$_POST['markdown']);
$markdown = str_replace('\n','<br/>',$markdown);
Вы также можете сделать это:
$markdown = html_entity_decode($markdown);
Возможно, что-то сидит на входном слое и экранирует входящие символы с помощью обратной косой черты, поэтому при использовании mysql_real_escape_string
вы на самом деле получаете двойной экранированный контент.
Если вам не повезло, это может быть magic_quotes_gpc
в этом случае вы должны избавиться от этого как можно скорее, или если вы действительно не можете, то обойти это.