在用php函数hex2bin()把16转换成字符串时,如果输入的16进制数据有误,16进制字符串长度不是偶数位导致转换失败。16进制转换成字符串失败时hexadecimal input string must have an even length问题可以用以下代码解决。
$str = '687474703a2f2f7a697875657068702e6e65742f696e6465782e68746d6c'; // 过滤非16进制字符 $str = strspn($str, '0123456789abcdefabcdef'); //字符串长度不是偶数时pack来处理 if (strlen($str) % 2) { echo pack("h*", $str); } else { echo hex2bin($str); }