代わりにストリップスラッシュを使用してください。また、正規表現で単一の円記号を検索していて、置換が正しくありません。私はこれをテストしていませんが、\\{2}
ダブルバックスラッシュを検索し、それらをシングルに置き換える必要があります。\
さらに説明すると、このパターン[\\]
は、単一の円記号で構成されるセット内の任意の文字と一致します。PHPでは、正規表現をスラッシュで区切る必要もあります。/[\\]/
(区切り文字なしの)置換は\
、単一の円記号を照合するための正規表現ではありません。単一の円記号を一致させるための正規表現はです\\
。エスケープに注意してください。とはいえ、置換用語は正規表現ではなく文字列である必要があります(後方参照を除く)。
編集:以下のSvenは、stripslashesがすべてのバックスラッシュを削除すると主張しています。これは単に真実ではありません。その理由を以下で説明します。
文字列に2つの円記号が含まれている場合、最初の円記号はエスケープされた円記号と見なされ、削除されます。これはhttp://www.phpfiddle.org/main/code/3yn-2utで見ることができます。バックスラッシュがまったく残っているという事実は、ストリップスラッシュがすべてのバックスラッシュを削除するという主張と矛盾します。
明確にするために、この文字列宣言は無効です$x = "\";
。バックスラッシュは2番目の引用符をエスケープするためです。この文字列には円記号が1つ"\\"
含まれています。この文字列の引用符を外す過程で、この円記号は削除されます。この文字列には2つの円記号が含まれています。引用符を外すと、最初の円記号はエスケープされた円記号と見なされ、削除されます。"\\\\"