モンキーマトリックスの答えは、最近のバージョンのPHPでは正しくありません(7.3でテストしました)。 mysqli_real_escape_string()
特定の文字のみをエスケープします。これを元に戻す関数は次のとおりです。
function reverse_mysqli_real_escape_string($str) {
return strtr($str, [
'\0' => "\x00",
'\n' => "\n",
'\r' => "\r",
'\\\\' => "\\",
"\'" => "'",
'\"' => '"',
'\Z' => "\x1a"
]);
}
適切に作成されたアプリケーションでは、この関数が必要になることはめったにありません。エスケープを自動的に処理するには、パラメータバインディングでPDOを使用する必要があります。この関数は、入力時にすべてをエスケープしていたレガシーコードを処理するためにのみ作成したものであり、元のデータに戻す方法が必要でした。