PHP字符串转十六进制

7

我有一个字符串像这样:

[0-9A-Za-z\+/=]*

如何将其转换成以下形式:
"\133\x30\55\x39\101\x2d\132\x61\55\x7a\134\x2b\57\x3d\135\x2a"

有没有这方面的功能?

5
你在决定想要十六进制形式还是十进制形式时有什么精神分裂的规则吗?请翻译此句。 - Kerrek SB
2个回答

13
function strtohex($string)
{
  $string = str_split($string);
  foreach($string as &$char)
    $char = "\x".dechex(ord($char));
  return implode('',$string);
}

print strtohex("[0-9A-Za-z\+/=]*");

上面的代码会给你

\x5b\x30\x2d\x39\x41\x2d\x5a\x61\x2d\x7a\x5c\x2b\x2f\x3d\x5d\x2a

我知道它的输出看起来并不像你期望的那样,但这似乎根本不是将字符串转换为十六进制。


很酷!谢谢! :) 5分钟限制后我会将您的答案标记为答案 :) - KodeFor.Me

2
如果您想进行字符串混淆,可以采用Kristians的方法。您可以使用如下方式在两种编码方法之间切换:
 $char = (++$i%2) ? "\x".dechex(ord($char)) : "\\".decoct(ord($char));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接