ある文字列を数値に変換 (php)

いや 何をいってるかわからないとおもうが。。。(ry

なんでこんなことしなきゃいけないのかわかりませんが、
文字列が必ず毎回同じ(int)数値になるようにしなきゃいけなくなりまして。

こんな感じでかいてみました。

    $word2Int = (int)("1".substr(preg_replace("/[^0-9]+/","",md5($word)),1,9));

一応コメントをつけるとすれば
文字列をmd5して、そこから0-9以外の数値を切り取って、
PHP_INT_MAXの値の桁数くらいまでに抑えるようにsubstrして
頭が0だと8進数になって8,9の数値がぶっ壊れるので適当に頭は1固定とかにして、
それを(string)から(int)キャストするかんじです。

こんなかんじ。

    $word2Int[] = (int)("1".substr(preg_replace("/[^0-9]+/","",md5("ばかやろー")),1,9));
    $word2Int[] = (int)("1".substr(preg_replace("/[^0-9]+/","",md5("あほやろー")),1,9));
    $word2Int[] = (int)("1".substr(preg_replace("/[^0-9]+/","",md5("")),1,9));

    var_dump($word2Int);

    array(3) {
      [0]=>
      int(1523827225)
      [1]=>
      int(1877443054)
      [2]=>
      int(1189800204)
    }

われながら気持ち悪いなw
書くことないとはいえ。

どうでもいいけどこれやばい

array_unique関数がPHP5.2.9から後方互換性を失いました – hnwの日記

だからPHPはカオスとか言われるんだよ。。。
ユニーク一つ満足に取れないとは
なんてユニークな言語になってしまったんだ。

Leave a Reply