PHP字符串到十六进制

时间:2011-12-16 17:28:32

标签: php encoding character-encoding

我有一个这样的字符串:

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

我如何以下列形式转换:

"\133\x30\55\x39\101\x2d\132\x61\55\x7a\134\x2b\57\x3d\135\x2a"

那有什么功能吗?

2 个答案:

答案 0 :(得分:11)

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

我知道它看起来不像你期望的输出,但似乎根本不是字符串到十六进制。

答案 1 :(得分:2)

如果你想执行这样的字符串混淆,那么使用类似@Kristians方法的东西。您可以在两种编码方法之间进行切换,例如:

 $char = (++$i%2) ? "\x".dechex(ord($char)) : "\\".decoct(ord($char));