2011-12-16 1 views
6

Ho una stringa del genere:stringa di PHP in esadecimale

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

Come posso convertito nella forma seguente:

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

C'è una funzione per questo?

+5

Qual è la tua regola schizofrenica per decidere se vuoi la forma esadecimale o la forma decimale? –

risposta

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

Il codice di cui sopra vi darà

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

Sono consapevole che non sembra l'output che ci si aspetta, ma che non sembra essere una stringa esadecimale a tutti.

+0

Fantastico! Grazie ! :) Segnerò la risposta come risposta dopo la limitazione di 5 minuti :) –

2

Se si desidera eseguire tale offuscamento della stringa, utilizzare qualcosa come @Kristians. E puoi alternare tra i due metodi di codifica con e.g .:

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