РНР продезинфицировать уценки - вывод HTML
У меня есть редактор WMD на моем сайте, и я храню уценку в БД. Но прежде чем отправить markdown в базу данных, я фильтрую его с помощью mysql_real_escape_string, например:
$to_database = mysql_real_escape_string($_POST['markdown']);
И это нормально. Но теперь я хочу показать это, поэтому я использую PHP Markdown (который преобразует markdown в html). Но проблема в том, что он показывает мне rn и n вместо новых строк. Я попробовал использовать функцию nl2br, но это не помогло. Даже если я не избегаю вывода (не конвертируйте markdown в html и используя htmlpurifier) я все равно получаю n вместо новых строк. Только когда я удаляю mysql_real_escape_string, это выглядит нормально.
Бббббббббб нннннннн
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
, и в этом случае вы должны избавиться от нее как можно скорее, или если вы действительно не можете, то обойти ее.