2

私のサイトにはWMDエディターがあり、マークダウンをDBに保存しています。しかし、データベースにマークダウンを送信する前に、次のようにmysql_real_escape_stringでフィルタリングします。

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

そしてそれは大丈夫です。しかし、今はそれを表示したいので、PHP Markdown(マークダウンをhtmlに変換する)を使用します。しかし、問題は、新しい行の代わりに\ r\n\nが表示されることです。nl2br関数を試しましたが、役に立ちませんでした。出力をエスケープしなくても(マークダウンをhtmlに変換せず、htmlpurifierを使用しないでください)、新しい行の代わりに\nを取得します。mysql_real_escape_stringを削除した場合にのみ、問題なく表示されます。

bbbbbbbbbbb nnnnnnnnn

4

2 に答える 2

0

入力レイヤーに何かがあり、バックスラッシュで着信文字をエスケープしている可能性があります。そのため、使用mysql_real_escape_stringすると、実際には二重エスケープされたコンテンツが取得されます。

運が悪ければ、そのようなことがあるかもしれませんmagic_quotes_gpc。その場合は、できるだけ早くそれを取り除く必要があります。または、本当にそれを回避できない場合は、それを回避する必要があります。

于 2011-07-11T21:46:15.963 に答える
-1

それらは変換されており、改行として機能しなくなりました。それらを置き換えたい:

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

また、これを実行することもできます。

$markdown = html_entity_decode($markdown);
于 2011-07-11T21:38:34.703 に答える