是否有 native PHP函数用于将字符串转换为其HEX表示形式,然后可以eval()
作为字符串,例如:
"ABC" => "\x41\x42\x43"
我知道它可以通过几个步骤完成,我只是想知道我是否会因使用单个本机函数而造成不必要的复杂化?
答案 0 :(得分:1)
没有本机功能,但您可以使用hex2bin
来评估十六进制的PHP代码,例如。
eval(hex2bin("6563686f20706928293b")); # Output: 3.14159265359
eval(hex2bin(bin2hex("echo pi();"))); # Behind the scenes.
或者您可以调用名称为十六进制字符串的函数:
$ echo '<?$_=hex2bin(7069);die($_());' | php # 7069 = pi
3.14159265359
答案 1 :(得分:0)
你为什么不尝试这样的事?
function strtohex($string) {
if (!empty($string)) {
$output = null;
$count = strlen($string, "UTF-8");
for ($i = 0; $i < $count; $i++) {
$output .= dechex(ord($string[$i]));
}
return $output;
}
}
对于单行,我能想到的唯一选择是bin2hex()
函数,它在PHP中是原生的,并提供相同的功能。
答案 2 :(得分:0)
$n = 1234;
echo printf("%x", $n); //should return the hexadecimal format of the number
答案 3 :(得分:0)
没有内置的PHP函数来实现相同的结果,但是对于一些PHP-Fu,你可以在一行中完成:
$str = 'ABC';
$str = '\x'.implode('\x', str_split(bin2hex($str), 2));
echo $str; // \x41\x42\x43
还有一个piece of code in the PHP docs可以得到完全相同的结果:
$str = 'ABC';
$field=bin2hex($str);
$field=chunk_split($field,2,"\\x");
$field= "\\x" . substr($field,0,-2);
echo $field; // \x41\x42\x43