2009-02-26 13 views

Odpowiedz

22

korzystać z funkcji ORD

http://ca.php.net/ord

np.

<?php 
$var = "nÖ§9q1Fª£ˆæÓ§Œ_»—Ló]j"; 

for($i = 0; $i < strlen($var); $i++) 
{ 
    echo ord($var[$i])."<br/>"; 
} 
?> 
+1

@YzmirRamirez: aby wyświetlić bajty, potrzebujesz długości bajtów, a nie długości znaku, więc użycie 'mb_strlen' jest w rzeczywistości błędem. – Ped7g

+0

Masz rację @ Ped7g. Zwykle używam funkcji mb_ i widziałem wyżej wymienione połączenie. Ale lepsza odpowiedź jest poniżej, która nie wymaga pętli. –

3

Ord() wykonuje sztuczkę z zestawem znaków ASCII. Jeśli jednak wtrącasz się w ciągi wielobajtowe (np. UTF-8), nie masz szczęścia i musisz je zhakować samodzielnie.

4

Jeśli mówimy o wartości hex, to należy zrobić dla Ciebie:

$value = unpack('H*', "Stack"); 
echo $value[1]; 

Reference

+0

To jest świetna odpowiedź; znacznie lepsze niż manipulowanie pętlami 'for' i pojedynczymi znakami. – miken32

19

Jeśli chcecie Państwo uzyskać ciąg jako tablicę kodów całkowitych, jest ładny jedno- liniowa:

unpack('C*', $string) 

Uwaga: wynikowa tablica jest indeksowana od 1, a nie od 0!

+0

+1 - _exactly_ to, czego potrzebowałem – Hobo