2006年11月26日

ちょっとハッシュ系関数をピックアップしてみる。

できるだけネイティブな命令を使いたいのだが
例えばセッションなど見ていると果たしてこのままそれを使っていいのかという気がしてきた。
とりあえずPHP限定で基本的なデータ操作系の命令をピックアップしてみる。
ヘタにまとめると情報として意味をなさないので単なる列記程度で数パートという感じにしてみようと思った。
それがその一でまずはハッシュ系の関数。

正規表現探索はeregとpreg_matchがあるが
preg_matchの方が評判が良くPerlとも互換だとか
ただしコストが高いらしいので汎用性のない部分のみでの使用が良さそう。

PHPにはinet_atonがない。
$_SERVER[REMOTE_ADDR]を一旦32bit整数値にするための命令はip2longらしい。

ハッシュ系
crc32、md5_fileとmd5と非可逆の暗号化のcrypt、uniqid命令

英数字変化系
base64_encodeとbase64_decode、htmlspecialchars(逆はない)、urlencodeとurldecodeと半角スペースを + に変換しないrawurlencode,rawurldecode

また基本的にはsprintfないしは直接出力のprintfがある。
たとえばipを16進に変えたい時は

printf('%X',ip2long($_SERVER[REMOTE_ADDR]));

となるわけだ。
ここで数字だけ出しているが最初のパラメータは文字列として記述できる。
まさにテンプレ用だ。
PHPは「文字列」として扱うことができるのは非アスキーキャラも同等である。
つまりIPなどは整数型でキーにしたほうが4byteですむ。
ユニークさが保たれている範囲ではCRCなどで2byteにするのも手だろう。

時間関連は一大ジャンルなので省く


ラベル:PHP
posted by Xo_ox at 23:56| Comment(0) | サーバーサイド手習い | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。