| 小 | 中 | 大 |
htmlspecialchars関数を簡単に扱えるようにする
特殊文字を HTML エンティティに変換してくれるhtmlspecialchars関数。
PHPでは基本中の基本である関数でありながら、名前の長さやオプションの設定などが面倒で困ったものです。「htmlspecialchars」は覚えられても、オプションの「ENT_QUOTES」まで覚えるのはなかなか大変だったりします。でも、ここで手を抜くと簡単に脆弱なアプリケーションができあがってしまう危険性があります。特にユーザーからの入力には、手軽にがっちり入力保険をかけておくべきです。
そんなわけで、htmlspecialcharsを簡単に扱えるようにする方法を考えてみました。
PHPでは基本中の基本である関数でありながら、名前の長さやオプションの設定などが面倒で困ったものです。「htmlspecialchars」は覚えられても、オプションの「ENT_QUOTES」まで覚えるのはなかなか大変だったりします。でも、ここで手を抜くと簡単に脆弱なアプリケーションができあがってしまう危険性があります。特にユーザーからの入力には、手軽にがっちり入力保険をかけておくべきです。
そんなわけで、htmlspecialcharsを簡単に扱えるようにする方法を考えてみました。
関数名を短縮し、オプションも指定する
htmlspecialchars関数が使いにくいのは、名前が長いのとオプションの指定が面倒だからです。よって、次のように置き換えてしまえば、簡単に使えます。「htmlspecialchars」関数を「h」という関数前で置き換え、オプションの「ENT_QUOTES」を直接指定しています。文字コードが決まっていれば、文字コードのオプションも設定した方が良いかもしれません。function h($str){ return htmlspecialchars($str,ENT_QUOTES); }
利用する際は、次のように入力が短くなり、簡単に扱えるようになります。
//今まで htmlspecialchars($str,ENT_QUOTES); ↓↓↓ //これからh($str);
配列ごと変換できるようにする
「h($str);」で簡単に変換できるようにはなりましたが、変換対象が多い配列などでは、毎回の変換が大変です。そこで、配列でも同じ方法で変換できるように書き換えます。「is_array」関数で、引数のデータが配列かどうかを調べ、配列の場合は「array_map」関数で配列全てを変換しています。function h($str){ if(is_array($str)){ return array_map("h",$str); }else{ return htmlspecialchars($str,ENT_QUOTES); } }
入力と出力例は、次のようになります。
//入力データ
$str1 = array("one<br>", "<b>two</b>", '"three"', "'four");
$str2 = "<br>";
print_r(h($str1));
print_r(h($str2));
//出力データ
Array
(
[0] => one<br>
[1] => <b>two</b>
[2] => "three"
[3] => 'four
)
<br>
これで、通常の変数でも配列でも、簡単に変換できるようになりました。
スポンサード リンク
| はじめてのAdobe AIRプログラミングを当ブログ管理人ZAPAが執筆しました! | ||
|---|---|---|
| → | ||
| ↑古い方です↑ | ↑最新バージョンです↑ | |
| 既存のWebアプリケーション技術で、クロスプラットフォームのデスクトップアプリケーションを作ることができる期待の新技術「Adobe AIR」の解説本です。 | ||
