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

PHPのFILTER_SANITIZE_NUMBER_FLOAT定数とは?使い方とフラグの解説

FILTER_SANITIZE_NUMBER_FLOAT定数は、浮動小数点数(float)から不正な文字をすべて削除するためのサニタイズフィルタです。ユーザー入力などから数値以外の不要な文字を取り除き、安全な浮動小数点数として扱えるようにします。

利用できるフラグ

この定数は、以下のフラグと組み合わせて使用することで、削除せずに許可する文字を制御できます。

  • FILTER_FLAG_ALLOW_FRACTION — 小数点(小数区切り文字)を許可します。
  • FILTER_FLAG_ALLOW_THOUSAND — 桁区切り文字(カンマなど)を許可します。
  • FILTER_FLAG_ALLOW_SCIENTIFIC — 指数表記(科学的記法、例:1.5e+10)を許可します。

戻り値

FILTER_SANITIZE_NUMBER_FLOATは定数であるため、それ自体が値を返すことはありません。実際のサニタイズ処理は、filter_var()関数にこの定数を渡すことで行われ、その結果が返されます。

使用例1:FILTER_FLAG_ALLOW_FRACTION

次の例では、FILTER_FLAG_ALLOW_FRACTIONフラグを使用して、小数点を許可しています。

<?php
    $var = "3-1f+2.56p";
    var_dump(filter_var($var, FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_FRACTION));
?>

出力結果

string(8) "3-1+2.56"

この例では、入力文字列「3-1f+2.56p」から、数字・符号・小数点以外の文字(f や p)が削除され、「3-1+2.56」が出力されています。FILTER_FLAG_ALLOW_FRACTIONフラグがあるため、小数点「.」は保持されています。

使用例2:FILTER_FLAG_ALLOW_THOUSAND

続いて、FILTER_FLAG_ALLOW_THOUSANDフラグを使用した例を見てみましょう。このフラグにより、桁区切り文字(カンマ)が許可されます。

<?php
    $var = "1-4f+25,6p";
    var_dump(filter_var($var, FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_THOUSAND));
?>

出力結果

string(8) "1-4+25,6"

この場合も同様に、数字・符号以外の文字が削除され、カンマ「,」は桁区切り文字として許可されているため残っています。

まとめ

FILTER_SANITIZE_NUMBER_FLOATは、浮動小数点数から不正な文字を除去する便利なフィルタです。ただし、デフォルト状態では小数点も削除されるため、実用時にはFILTER_FLAG_ALLOW_FRACTIONなどのフラグを適切に組み合わせることが重要です。ユーザー入力のバリデーション前処理として活用することで、より安全なアプリケーションを構築できます。

  1. PHPのrad2deg()関数とは?ラジアンを度(デグリー)に変換する方法

    PHPのrad2deg()関数は、ラジアン単位の値を度(デグリー)単位の値に変換するための組み込み関数です。引数として渡されたラジアン値 val を、それに相当する度数に変換して返します。三角関数(sin() や cos() など)はラジアンを扱う一方、人間にとって直感的な角度表現は「度」であることが多いため、この関数は数学的な計算やグラフ描画などの場面で非常に便利です。構文rad2deg(val)パラメータval − 度に変換したいラジアン値を指定します。数値型(int または float)を受け付けます。戻り値rad2deg() 関数は、指定されたラジアン値 val を度に変換した結果を返

  2. PHPのlog1p()関数とは?使い方とサンプルコードを徹底解説

    PHPのlog1p()関数は、log(1 + 数値) を計算するための数学関数です。この関数の大きな特徴は、引数として渡す数値がゼロに近い場合でも、高精度で計算結果を返せる点にあります。通常の log(1+x) の計算では、x が極端に小さい値だと浮動小数点数の精度の関係で誤差が生じやすくなりますが、log1p() を使えばその問題を回避できます。構文log1p(val)パラメータval − 計算対象となる数値を指定します。戻り値log1p() 関数は、log(1 + 数値) の計算結果を返します。数値がゼロに非常に近い場合でも、精度を保ったまま計算されるのが特徴です。使用例まずは、log1p