之前,项目中有使用到PHP的hexdec(string $hex_string
),这一内置函数,需求是将十六进制数转换为十进制数。后来在生产环境发现,传入的参数$hex_string(需要进行转换的十六进制的字符串),可能存在一些特殊情况,比如:正常的传参为如下形式:'eeaac32',而在生产环境中,可能传入值的情况为'[eeaac32'、'eeaac32]'、'[eeaac32]',诸如这样的非标准形式,后来就是紧急对这样的传参进行对这些'['、']'符号的去除,然而,后续测试同学发现,就是不补充针对'['、']'这些符号的过滤处理模块,之前的功能也能正常进行。于是,排查了一下原因,就去翻查了一下hexdec()这个函数的说明使用手册,发现PHP官方网站中关于这个函数有这么一段说明描述:
" hexdec() 会忽略它遇到的任意非十六进制的字符"
是没有被我所学习了解到的,特此,进行一下学习记录。
官方网站中给出的例子如下:
<?php
// both print "int(238)"
var_dump(hexdec("See"));
var_dump(hexdec("ee"));
// print "int(10)"
var_dump(hexdec("that"));
// print "int(160)"
var_dump(hexdec("a0"));
?>
以上代码片段已做验证。
我这边自己也拿工作项目中的案例进行了一下测试验证,代码片段如下:
<?php
// both print "int(250260530)"
var_dump(hexdec('[eeaac32'));
var_dump(hexdec('eeaac32]'));
var_dump(hexdec('[eeaac32]'));
var_dump(hexdec('eeaac32'));
?>