次の URL があります。
/eventfunctions.php?eventtype=Don%27t+Touch+The+Floor
そして私が使うとき
$_GET['eventtype'];
Don\'t と表示されていますが、なぜ \ が存在するのか、それを取り除く方法がわかりません。他の % 記号には \ がなく、'.
この \ を削除するにはどうすればよいですか?
stripslashes($_GET['eventtype']);
または、varをURLデコードしていない場合:
stripslashes(urldecode($_GET['eventtype']));
バックスラッシュは、文字列が壊れないようにするために追加されるエスケープ文字です。
想像
$str = 'Don't';
バックスラッシュを削除するには、メソッドstripslashesを使用します
$str = stripslashes($_GET['eventtype']);
これはmagic_quotes_gpcによるものです。
.htaccess ファイルに次の行を追加することで無効にできます。
php_flag magic_quotes_gpc Off
または、php.ini ファイルで magic_quotes_gpc の値を Off に変更します。
PHPのmagic_quotes ini オプションが有効になっているため、バックスラッシュが変数$_GET
と変数に自動的に追加されます。そのディレクティブは非推奨であり、代わりに、自動的にではなくユーザーが必要とするときにエスケープを行うことをお勧めします。そのオプションをon にするために古い PHP バージョンを使用している可能性があります。$_POST
コードが最新の PHP バージョンで使用される場合は、次の方法で移植可能なコードを記述できます。
if (get_magic_quotes_gpc()) { //if magic quotes is active
stripslashes($_GET['eventtype']); //remove escaping slashes
}