Pogledajte određenu poruku
Staro 14. 02. 2011.   #1
draskom
Drasko
Na probnom radu
 
Avatar draskom
 
Datum učlanjenja: 08.11.2010
Lokacija: Beograd
Poruke: 20
Hvala: 2
1 "Hvala" u 1 poruci
draskom is on a distinguished road
Default php char to hex

Problem je sledeci:

Imam jedan string karaktera, u pitanju je ceo ISO-8859-1, ali tamo gde izbija problem je u ovom delu: !"#$%&'()

Zelim da prebacim taj string karaktera u njihove hexadecimalne vrednosti i imam ovu liniju koda koja to radi:

Kôd:
<?php
$string = "!\"#$%&'()";

$hex = preg_replace("/(.)/es", "sprintf(' %02X', ord('$1'))", $string);

echo $hex;

?>
Rezultat ovoga bi trebalo da bude u hexadecimalnom obliku:

Kôd:
21 22 23 24 25 26 27 28 29
medjutim ja dobijam ovo:

Kôd:
21 5C 23 24 25 26 27 28 29
Problem je u 5C koji je u stvari karakter / odnosno escape.

Zakljucak: umesto hexa kod za karakter " (22) dobio sam hexa kod za karakter / (5C).



Daljim mucenjem otkrio sam sledece, kada napisem preg_replace funkciju sa jednostrukim navodnicima umesto sa dvostrukim:

Kôd:
<?php
$string = "!\"#$%&'()";

$hex = preg_replace('/(.)/es', 'sprintf(" %02X", ord("$1"))', $string);

echo $hex;

?>
Dobijam ovo:

Kôd:
21 22 23 24 25 26 5C 28 29
Zakljucak: umesto hexa kod za karakter ' (27) dobio sam hexa kod za karakter / (5C).



Ne mogu da koristim ovako nesto:

Kôd:
echo hexdec(ord($char));
Jer ovo radi samo sa ASCII, a meni treba full ISO-8859-1.

Nadam se da neko moze da mi pomogne da resim ovo.

Poz
draskom je offline