以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
FILTER_CALLBACK
(int)
このフィルタは、フィルタリング処理をユーザー定義の関数に委譲します。
options パラメータの 'options'
キー経由で callable を渡します。
コールバックは、以下のシグネチャを持ちます:
valueフィルタされる値
注意:
コールバックから返される値が、 フィルタ関数の呼び出しで返される値になります。
例1
ログイン名を検証するために
FILTER_CALLBACK
を使う例
<?php
function validate_login(string $value): ?string
{
if (strlen($value) >= 5 && ctype_alnum($value)) {
return $value;
}
return null;
}
$login = "val1dL0gin";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
$login = "f&ke login";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
?>上の例の出力は以下となります。
string(10) "val1dL0gin" NULL
注意:
PHP 8.1.25 および 8.2.12 以降では、構造に関するフラグ
FILTER_REQUIRE_ARRAY、FILTER_FORCE_ARRAY、FILTER_REQUIRE_SCALARがこのフィルタに適用され、FILTER_NULL_ON_FAILUREを指定すると、 こうした構造上の失敗の報告方法が変わります。 これより前のバージョンでは、すべてのフラグが無視されていました。 フィルタ固有のフラグは常に無視されます。 また、コールバックの戻り値がそのまま結果になるので、 コールバック自体が失敗することはありません。 つまり、コールバックが返したfalseをnullや例外に変えるフラグはありません。