-
PHPで あらゆる文字をhtmlentityする
HTMLで使われる特殊文字というのがある。 たとえば < とか > とかで、これらをHTMLソースに書くと画面表示上では < ならび > で表示される。 PHPには htmlentities() とか htmlspecialchars() といったネイティブ関数が用意されているが、一部の文字しか変換してくれないようだ。 本当は ASCII値を渡せばどんな文字でもhtmlentityで表現できる。 この htmlentity文字列だと、日本語のWebページに他言語のマルチバイト文字(中国語やハングル文字)などを埋め込むことができるし、メールアドレスの難読化ができて、メアド収集ロボットに対する防止になる(かもしれない)。 そこで、PHPによる変換するスクリプトを書いてみた。
-
PHPで、呼び出し元のファイル名・行番号を知りたい
小ネタをひとつ。 以前の記事「PHPで Warningや Noticeをハンドリングして扱いやすくする」で、Exceptionって別に投げなくてもいいんだ!なんてことを覚えたわけで、これを利用すれば呼び出し元のファイル名と行番号を取得することができることに気付いた。
-
PHPで Warningや Noticeをハンドリングして扱いやすくする
この記事は、以前のブログに投稿したものを微修正して再掲載したものです。初出は2011年4月です。 PHPでset_error_handler()って関数を使うと、WARNINGとか NOTICEなどが発生した時に例外を投げてくれるようになります。 参考にしたのはPHPマニュアルのユーザーコメント。 http://tr2.php.net/manual/ja/class.errorexception.php とかね。 処理ごとに WARNINGなどを監視するのはめんどくさいので、これ使って例外投げてもらって まとめて処理できるようになると楽だなと思っていたんだけど、逆に毎回例外が発生して使い勝手が悪くなってしまった。 っていうか、一番取りたいERRORは有無を言わさずプログラム停止するって仕様はどうなのよ? なんのための例外処理なんだろう? ERRORはしょうがないから諦めるとして、それ以外は ページ表示した後 WARNING何件 NOTICE何件、詳細はこうって感じで出せるようにならないかなぁ? と思ったところで、このハンドラ内部で throw するんじゃなくて、例外オブジェクトをコレクトするだけの処理にすればいいんじゃないかなと思ったので、実装してみました。
最近のコメント