忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2017/11/19 14:04 |
ZF1.11 Zend_Filter
Zend_Filterは値のフィルタリングを行います。

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


2011/08/29 22:41 | Comments(0) | TrackBack(2) | PHP

トラックバック

トラックバックURL:
前回Zend_Filterでhtmlspecialchars()できるとか言いましたが、実はZend_Filter_HtmlEntitiesはあってもZend_Filter_HtmlSpecialcharsはありませんでした。 あれれ。 このような場合、Zend_Filterでは簡単にフィルタを追加することができます。 が、htmlspecialchars()のように既存の関数を呼ぶだけであればもっと手っ取り早い方法があります。 <?php //フィルタリングする文字列...
弱小PHPerの憂鬱 | 2011/09/02 22:40
前回前々回Zend_Filterを紹介しましたが、実はリファレンスにはフィルタクラス群のリストに載っていない謎のクラス群が存在します。 Zend_Filter_Word_UnderscoreToDash、Zend_Filter_Word_CamelCaseToSeparatorなどZend_Filter_Word配下に属するクラス群です。 まあ謎と言っても実はインフレクタのほうに載ってるんですが。 しかしこの解説、何言ってるのか全然わからないのですが、簡単に言うと文字列変換を行うフィル...
弱小PHPerの憂鬱 | 2011/09/05 22:46

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<ZF1.11 Zend_Filterで既存の関数を利用 | HOME | 買ったものリスト 2011/08/28>>
忍者ブログ[PR]