您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

生成短链接,php5.6可用,为什么php7生成不了?

2026/1/12 1:15:18发布20次查看
function shorturl($long_url){ $key = '123'; $base32 = abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz; // 利用md5算法方式生成hash值 $hex = hash('md5', $long_url.$key); $hexlen = strlen($hex); $subhexlen = $hexlen / 8; $output = array(); for($i=0;$i> 5; } $output[$i] = $out; } // 生成位数 return $output;}print_r( shorturl('http://www.google.com/') );

php5.6输出结果为:
array( [0] => mvvizz [1] => qurrjy [2] => u7rizu [3] => jnnjbi)

php7输出结果为:
array( [0] => aaaaaa [1] => aaaaaa [2] => aaaaaa [3] => aaaaaa)

这是哪的问题?
回复内容: function shorturl($long_url){ $key = '123'; $base32 = abcdefghijklmnopqrstuvwxyz0123456789abcdefghijklmnopqrstuvwxyz; // 利用md5算法方式生成hash值 $hex = hash('md5', $long_url.$key); $hexlen = strlen($hex); $subhexlen = $hexlen / 8; $output = array(); for($i=0;$i> 5; } $output[$i] = $out; } // 生成位数 return $output;}print_r( shorturl('http://www.google.com/') );

php5.6输出结果为:
array( [0] => mvvizz [1] => qurrjy [2] => u7rizu [3] => jnnjbi)

php7输出结果为:
array( [0] => aaaaaa [1] => aaaaaa [2] => aaaaaa [3] => aaaaaa)

这是哪的问题?
问题主要出现在这句话上
$idx = 0x3fffffff & (1 * ('0x' . $subhex));
因为在php7中,十六进制的字符串不再被认为是数字,所以这里所采用的隐式转换变成了无效转换,导致结果出现了问题。
可以将此句替换为
$idx = 0x3fffffff & hexdec($subhex);
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product