PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのaddslashes()関数の使い方|文字列のエスケープ処理をわかりやすく解説

addslashes()関数とは

PHPのaddslashes()関数は、文字列内の特定の文字の前にバックスラッシュ(\)を付加した文字列を返す関数です。主に、データベースへのクエリなどで引用符を含む文字列を安全に扱うためのエスケープ処理に利用されます。

エスケープ対象となる文字

この関数が自動的にエスケープするのは、以下の4種類の文字です。

  • シングルクォート(')
  • ダブルクォート(")
  • バックスラッシュ(\)
  • NULL(NULバイト)

構文

addslashes(str)

パラメータ

  • str − エスケープ処理を行いたい文字列を指定します。

戻り値

エスケープ対象の文字の前にバックスラッシュが付加された文字列を返します。

使用例1:シングルクォートのエスケープ

以下は、シングルクォートを含む文字列にaddslashes()を適用する例です。

<?php
   $s = "Who's Tom Hanks?";
   echo $s . " Unsafe for database query!<br>";
   echo addslashes($s) . " Safe in a database query!";
?>

出力結果

Who's Tom Hanks? Unsafe for database query!
Who\'s Tom Hanks? Safe in a database query!

「Tom's」のシングルクォートの前にバックスラッシュが付加され、「Tom\'s」に変換されていることがわかります。これにより、SQL文の中で文字列が正しく解釈されるようになります。

使用例2:ダブルクォートを含む文字列

次に、別の例を見てみましょう。

<?php
   $s = addslashes('Cricket is a “religion” in India.');
   echo($s);
?>

出力結果

Cricket is a “religion” in India.

なお、この例で使われている「“」「”」はUnicodeの全角引用符(スマートクォート)のため、ASCIIのダブルクォート(")とは異なり、addslashes()によるエスケープ対象外である点に注意してください。

使用時の注意点

addslashes()は手軽なエスケープ手段ですが、データベースへのクエリを安全にする目的での使用は推奨されていません。MySQLを利用する場合は、mysqli_real_escape_string()関数や、PDOなどのプリペアドステートメントを使うことがベストプラクティスとされています。特に日本語などのマルチバイト文字を扱う環境では、addslashes()では正しくエスケープできないケースがあるため、注意が必要です。

  1. PHPのlog()関数とは?自然対数の計算方法と使い方を解説

    定義と使い方log() 関数は、数値の自然対数(natural logarithm)を計算します。対数とは、指数関数の逆演算のことです。たとえば 102=100 という関係は「log10100=2」と表せます。自然対数はオイラー数 e を底として計算され、PHP では定義済み定数 M_E によって e の値(2.7182818284590452354)が提供されています。具体例を挙げると、exp(4.60517018599)=100(つまり e4.60517018599=100)が成り立つため、loge100=4.60517018599 となります。PHP では、この自然対数(loge)を l

  2. PHPのlcg_value()関数とは?乱数生成の基本と使い方を解説

    lcg_value()関数の定義と使い方lcg_value()関数は、0から1までの範囲でランダムな数値(浮動小数点数)を生成するPHP組み込み関数です。「LCG」とは「線形合同法(Linear Congruential Generator)」の略称です。この手法は、不連続な区分線形方程式を用いて擬似乱数列を計算するアルゴリズムで、擬似乱数生成アルゴリズムの中でも最も古くから知られているものの一つです。構文lcg_value ( void ) : floatパラメータこの関数は引数を受け取りません。戻り値lcg_value()関数は、0.0以上1.0以下の範囲にある擬似乱数のfloat値を返し