ユーザー定義のフィルタ

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

FILTER_CALLBACK (int)

このフィルタは、フィルタリング処理をユーザー定義の関数に委譲します。 options パラメータの 'options' キー経由で callable を渡します。

コールバックは、以下のシグネチャを持ちます:

function callback(string $value): mixed
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 や例外に変えるフラグはありません。