0

たとえば、「それだけです」という文字列を保存したいとします。MySQL は自動的に ' 文字をエスケープします。PHP を使用してデータベースからその文字列をエコーする方法はありますが、\' のようなエスケープ文字の前にある \ を削除するにはどうすればよいですか? また、改行や空白などの他の書式も保持したいと思います。

4

3 に答える 3

1

準備済みステートメントを使用する場合、これらの文字は挿入時にエスケープされません。

stripslashes()入力時にスラッシュを追加せざるを得ない場合に、スラッシュを削除するために使用します。

于 2013-03-19T20:51:13.780 に答える
1

試してみましたかstripslashes()、改行に関してはnl2br()関数を使用するだけです。

例:

$yourString = "That\'s all\n folks";
$yourString = stripslashes(nl2br($yourString));
echo $yourString;

注:二重スラッシュは単一スラッシュ\\に変わります\


おそらく、次のような独自の関数をセットアップする必要があります。

$yourString = "That\'s all\n folks";

function escapeString($string) {
    return stripslashes(nl2br($string));
}

echo escapeString($yourString);

ドキュメントにはいくつかの良い例もありますnl2br()


編集 2

これらが表示される理由は、mysql が改行などをエスケープしているためですmysql_*。関数を使用していると思います。mysqliおそらくまたはを調べる必要がありますPDO

次に例を示します。

$yourString = "That's all
 folks";
echo mysql_escape_string($yourString);

出力:

これで\r\nみんな

于 2013-03-19T20:56:54.037 に答える
-1

最初に、magic_quotes_gpc は ' や " などの文字をエスケープします。php.ini でこれを無効にすることもできます。ただし、クエリが「感染」しないように自分でエスケープする必要があります。詳細については、mysql インジェクションを参照してください。

エスケープされた文字列がデータベースに書き込まれたとき。文字列にはこれらのエスケープ文字が含まれておらず、それらを再度出力すると。必要に応じて結果が表示されるはずです。

私自身は、エスケープせずにすべてを保存し、出力するときにエスケープまたは表示する方法を好みます。を簡単に使用しstr_replace("\n", "", $text)て、ニュースラインが表示されないようにすることもできます。

ご挨拶MRu

于 2013-03-19T20:52:04.363 に答える