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 ?

1
  • 5
    What's your schizophrenic rule for deciding whether you want the hex form or the decimal form? Commented Dec 16, 2011 at 17:31

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

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.

Sign up to request clarification or add additional context in comments.

1 Comment

Cool ! Thanks ! :) I will mark your answer as answer after the 5 minutes limitation :)
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));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.