Zend_Filterは値のフィルタリングを行います。
Zend_Validateと違うのは、あちらはあくまで値のチェックを行うだけなのに対し、こちらは実際に値を処理するという点です。
まあ、htmlspecialchars()とかtrim()とか数値に変換したりといった操作を一元的に行えるクラスです。
使い方もZend_Validateとほぼ同じです。
filterStatic()メソッドで静的に実行できたり、フィルタチェインにはインクルードが必要なところまで同じです。
http://framework.zend.com/manual/ja/zend.filter.introduction.html
ちなみにfilterStaticの第三引数、'match'や'replace'には全然意味がなくて、配列の順番だけしか見ていません。
array('replace'=>'/<script>/', 'match'=>'script')って書いても全く同じ動作になります。
Zend_Filter_PregReplace自体にはif (array_key_exists('match', $options))みたいなことが書いてあるので直接呼び出せば連想配列が考慮されるのですが、Zend_Filter::filterStaticの呼び出し側がそこらへんを気にしないのでうっかり逆順に書いてたりすると事故ります。
微妙に残念。
Zend_Validateと違うのは、あちらはあくまで値のチェックを行うだけなのに対し、こちらは実際に値を処理するという点です。
まあ、htmlspecialchars()とかtrim()とか数値に変換したりといった操作を一元的に行えるクラスです。
使い方もZend_Validateとほぼ同じです。
filterStatic()メソッドで静的に実行できたり、フィルタチェインにはインクルードが必要なところまで同じです。
http://framework.zend.com/manual/ja/zend.filter.introduction.html
<?php
//フィルタリングする文字列
$string='ABC012<script>alert();</script>';
//Zend_Filter
require_once('Zend/Filter.php');
//静的にフィルタを実行
Zend_Filter::filterStatic($string, 'Alnum'); //「ABC012scriptalertscript」になる
Zend_Filter::filterStatic($string, 'PregReplace', array('match'=>'/<script>/', 'replace'=>'script'));//「ABC012scriptalert();</script>」になる
//フィルタチェイン
//フィルタチェインはインクルードが必要
require_once('Zend/Filter/Alpha.php');
require_once('Zend/Filter/StringToLower.php');
//フィルタチェインを作成
$filterChain = new Zend_Filter();
$filterChain
->addFilter(new Zend_Filter_Alpha())
->addFilter(new Zend_Filter_StringToLower());
//実行
$filterChain->filter($string); //「abcscriptalertscript」になる
簡単にフィルタリングできました。ちなみにfilterStaticの第三引数、'match'や'replace'には全然意味がなくて、配列の順番だけしか見ていません。
array('replace'=>'/<script>/', 'match'=>'script')って書いても全く同じ動作になります。
Zend_Filter_PregReplace自体にはif (array_key_exists('match', $options))みたいなことが書いてあるので直接呼び出せば連想配列が考慮されるのですが、Zend_Filter::filterStaticの呼び出し側がそこらへんを気にしないのでうっかり逆順に書いてたりすると事故ります。
微妙に残念。
PR
トラックバック
トラックバックURL: