filter拡張モジュール
PHP5.2.0からfilter拡張モジュールが追加され、デフォルトでコンパイルされるようになっています。で、以前試したバージョン0.9.4から関数名や定数名、使い方が変わっているようなので、ざっくり試してみました。
以下のコードで確認できると思います。5.2.0RC5で動作確認しています。なお、INPUT_GETをINPUT_POSTやINPUT_COOKIEに置き換えても使えます。
<?php /** * 指定した型の変数が存在するかどうかを調べ、存在すればその値を返す。 * 存在しない場合、falseを返す。新規追加? */ var_dump(filter_input(INPUT_GET, 'b')); echo '<hr>'; /** * 指定した型の変数が存在するかどうかを調べ、true/falseを返す * @see input_has_variable */ var_dump(filter_has_var(INPUT_POST, 'b')); echo '<hr>'; /** * PHP の外部から変数を受け取り、オプションでそれをフィルタリングする * @see input_get */ echo '<pre>'; var_dump(filter_input_array(INPUT_GET)); echo '</pre>'; echo '<hr>'; /** * 指定したフィルタでデータをフィルタリングする * @see filter_data */ echo '<pre>'; var_dump(filter_var($_GET['a'], FILTER_VALIDATE_INT)); var_dump(filter_var($_GET['b'], FILTER_VALIDATE_INT)); echo '</pre>'; echo '<hr>'; /** * PHP の外部から複数の変数を受け取り、オプションでそれらを *フィルタリングする * @see input_get_args */ $data = array( 'product_id' => 'libgd<script>', 'component' => '10', 'versions' => '2.0.33', 'testscalar' => array('2', '23', '10', '12'), 'testarray' => '2', ); $args = array( 'product_id' => FILTER_SANITIZE_ENCODED, 'component' => array('filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY, 'options' => array('min_range' => 1, 'max_range' => 10) ), 'versions' => FILTER_SANITIZE_ENCODED, 'doesnotexist' => FILTER_VALIDATE_INT, 'testscalar' => array( 'filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_SCALAR, ), 'testarray' => array( 'filter' => FILTER_VALIDATE_INT, 'flags' => FILTER_REQUIRE_ARRAY, ) ); echo '<pre>'; var_dump(filter_var_array($data, $args)); echo '</pre>'; echo '<hr>'; /** * サポートされるフィルタの一覧を返す * @see input_filters_list */ echo '<pre>'; var_dump(filter_list()); echo '</pre>'; echo '<hr>'; /** * フィルタの名前からフィルタ ID を返す * @see input_name_to_filter */ var_dump(filter_id('int')); ?> <hr> <a href="?a[]=a&a[]=1&b=2">link</a> <form action="filter03.php" method="post"> <input type="hidden" name="a[]" value="a"> <input type="hidden" name="a[]" value="1"> <input type="hidden" name="b" value="2"> <input type="submit" value="うりゃ!"> </form>