求个任意字符(UTF8编码中文,英文,数字)串转化为数字1-100的函数,最好转换完的数字在1-100分布比较均匀。

解决方案 »

  1.   

    $str = "字符串";
    echo crc32($str)%100;
      

  2.   

    to:foolbirdflyfirst
    对!只要转成2位正整数就行三楼的算个方法,只不过crc32校验码有时候返回负整数,结果可能是负值。我改了下
    sprintf("%u",crc32($str))%100;
      

  3.   

    sprintf("%u",crc32($str))%100 可以满足你的需求
      

  4.   

    不是bug,这个手册上写的很清楚呵呵
      

  5.   

    可以把字符转换成10进制的ASCII 
      

  6.   

    这个我试过了!ord只会返回字符串最左边的第一个字符的ASCII,这样感觉分布不是很均匀
      

  7.   

    那就用unpack
    echo call_user_func_array('ordsum',unpack('C*','天涯何处无芳草'));function ordsum()
    {
    return array_sum(func_get_args()) % 100;
    }