2010年2月11日木曜日

[php]Content-Type切り替え用クラス

最近のコンテンツタイプ切り替え用クラスでも晒してみる。

/**
* @author juner
* コンテンツタイプ用クラス。使い道ってあるのかな。
*/
class ContentsType{
static $patterns='/(\[|\]|\(|\)|\||\.|\|\*|\+|\^|\$)/i';
static $replacements='\\\\$1';
/**
* コンテンツタイプの配列[$types]を順に巡り、$_SERVER['HTTP_ACCEPT']に該当する物があった場合にその文字列を返す。
* @types コンテンツタイプの配列
* @return コンテンツタイプの文字列
*/
static public function checkHttpAccept($types){
if(is_array($types) && isset($_SERVER['HTTP_ACCEPT'])){
for($i=0,$max=count($types);$i<$max;$i++){
$pattern=preg_replace(self::$patterns,self::$replacements,$types[$i]);
if(ereg($pattern, $_SERVER["HTTP_ACCEPT"])) {
return $types[$i];
}
}
}else{
return false;
}
return false;
}
}

要は配列で渡したコンテンツタイプのリストを元に、$_SERVER['HTTP_ACCEPT']に該当するのがあるかをチェックして、該当するのがあったならばその文字列を返すって物である。配列内のどのコンテンツタイプにも該当しなかったらfalseを返すので要チェックではあるが……。

[php]最近使ってるサニタイズクラス。

というわけでjunerです。最近使ってるサニタイズクラスでもなんか載せてみようかと思う。クラスなのに単機能とはこれ如何に!

/**
* @author juner
* 文字列操作関連クラスそのうち実装増やす
*/
class Texts{
static $patterns=array('/&/i','/</i','/>/i','/"/i',"/'/i");
static $replacements=array('&amp;','&lt;','&gt;','&quot;','&#39;');
/**
* $patternsと$replacementsを調整する為の物。最初に一回やるだけで良い。
*/
static public function defsort(){
ksort(self::$patterns);
ksort(self::$replacements);
}
/**
* $strをサニタイジングする関数。
* @param $str サニタイジングされる文字列
* @return サニタイジングされた結果の文字列
*/
static public function sanitiz($str){
return preg_replace(self::$patterns,self::$replacements,$str);
}
}Texts::defsort();//順序を保証するために一度ソートする。

とりあえずこんな感じ。車輪の再発名な気がしてならないが……。

尚、使い方は以下の様になる

print Texts::sanitiz('文字列');

そんな感じ。