Уцененная PHP-разметка - вывод html - PullRequest
2 голосов
/ 12 июля 2011

У меня есть редактор WMD на моем сайте, и я сохраняю уценку в БД.Но прежде чем отправить уценку в базу данных, я отфильтрую ее с помощью mysql_real_escape_string, например:

$to_database = mysql_real_escape_string($_POST['markdown']);

И это нормально.Но теперь я хочу показать это, поэтому я использую PHP Markdown (который конвертирует markdown в html).Но проблема в том, что он показывает мне \ r \ n и \ n вместо новых строк.Я попробовал функцию nl2br, но это не помогло.Даже если я не экранирую вывод (не конвертирую уценку в html и не использую htmlpurifier), я все равно получаю \ n вместо новых строк.Только когда я удаляю mysql_real_escape_string, он выглядит хорошо.

bbbbbbbbbbb nnnnnnnnn

Ответы [ 2 ]

0 голосов
/ 12 июля 2011

Возможно, что-то сидит на входном слое и экранирует входящие символы с помощью обратной косой черты, поэтому при использовании mysql_real_escape_string вы фактически получаете двойной экранированный контент.

Если вам очень не повезло, эта вещь может быть magic_quotes_gpc, и в этом случае вам следует избавиться от нее КАК МОЖНО СКОРЕЕ, или, если вы действительно не можете, обойти ее .

0 голосов
/ 12 июля 2011

Они конвертируются и больше не действуют как разрывы строк. Вы хотите заменить их:

$markdown = str_replace('\r\n','<br/>',$_POST['markdown']);
$markdown = str_replace('\n','<br/>',$markdown);

Вы также можете сделать это:

$markdown = html_entity_decode($markdown);
...