2009-11-17 (火)
眠い
*とても恐ろしい
$ find xxxxxx -name "*.php" -exec cat {} ';' | wc -l 190075
一応プロジェクト名は伏せて.
*PHP::整数チェック
いままで,PHPで正の整数かチェックするのに,ctype_digit()を使っていたのですが,罠が.この関数,int型の数値を渡すとfalseになるんですね….
「ctype_digit(''.$d)」と書けば解決なんですが,空の文字列と結合して無理やりやっているのが汚い.
となると次案は「(is_int($d) && $d>=0) || ctype_digit($d)」かな?
これは,$d=1.0のときも false になる.$d=1.0;や$d=true;のとき$dの文字列表現は「1」なので,ctype_digit(''.$d)だと true になってしまう.厳密には,1.0は整数だけれど,falseにする方が処理的には奇麗かなぁ.
Perlなら何も気にせず「/^\d+$/」って書きますが,PHPでpreg_match(~とか書いていると,黒魔術を使っているような罪悪感に襲われるのでなるべく使いたくない.
PHPはとても奥が深い.プログラミングに対する認識が変わる.