2012年6月27日水曜日

PHPで文字列を数字に変換する

  • このエントリーをはてなブックマークに追加

よくある●●診断みたいなのに組み込まれているのが、
大体文字列を数字に変換して、数字で条件分岐して結果表示するといったロジック。

今回はそのロジックの一部分をさくっと作ってみた。



aとかbとか普通の文字列を数字に変換するパターン

$text_ary = str_split($text);
foreach($text_ary as $key => $value){
  $num[$key] = ord($value);
}
$result = array_sum($num);

str_splitで1文字ずつ分解して、$text_aryという配列に格納。
$text_aryという配列をforeachで一つずつまわしていき、
ord()という関数で文字コードに変換。
(ord("a")→61)
array_sum()を使って配列の中身を全て足し算すると数字が出る。

足し算してもいいし、掛け算でもいいだろうし。
結果を円でまわしてあげれば360パターン以下で済んだり。


URLから数字を取得するパターン
$url = urlencode($url);
$ary = explode('%',$url);
foreach($ary as $key => $value){
  if($value != "") $num[$key] = hexdec($value);
}
$result = array_sum($num);

まずはurlencodeでURLをUTF-8に変換してあげる。
UTF-8の場合は%が邪魔になってくるので、%で区切って配列化。
配列をまわしてあげて、hexdecを使って16進数を10進数に変換。
array_sum()を使って中身を足し算。

hexdec()を使う理由はurlencodeをすると「/」→「%2F」のように、16進数が出てくるため。
だから%で区切ってあげるとちょうど「2F」→「47」と表示される。


もちろん用途に分けて使ってあげる必要があるし、
ord()を使うところを工夫してhexdec()でもよいと思う。

0 件のコメント:

コメントを投稿

Adsense