2011-12-16 117 views
6

我有一個這樣的字符串:PHP字符串爲十六進制

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

我怎樣才能轉化爲以下形式:

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

是否有任何功能?

+5

什麼是你的精神分裂規則來決定你是否想要十六進制格式或十進制格式? – 2011-12-16 17:31:08

回答

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 

我知道,它並不像你所期望的輸出,但似乎並不被串在所有十六進制。

+0

酷!謝謝 ! :)我會在5分鐘限制後將你的答案標記爲答案:) – 2011-12-16 17:38:40

2

如果你想要執行這樣的字符串混淆處理,請使用類似@Kristians的方法。你可以在兩種編碼方式之間進行切換,例如:

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