7

I have a string like that:

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

How can I converted in the following form:

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

Is there any function for that ?

KodeFor.Me
  • 13,069
  • 27
  • 98
  • 166

2 Answers2

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\+/=]*");

The above code will give you

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

I'm aware that it doesn't look like the output you expect, but that doesn't seem to be string to hex at all.

kba
  • 19,333
  • 5
  • 62
  • 89
2

If you want to perform such a string obfuscation, then use something like @Kristians approach. And you can alternate between the two encoding methods with e.g.:

 $char = (++$i%2) ? "\x".dechex(ord($char)) : "\\".decoct(ord($char));
mario
  • 144,265
  • 20
  • 237
  • 291