2014-06-27 9 views
0

J'ai un GPS qui retourne l'adresse dans un format de chaîne UNICODE, par exemple:PHP - Convertir une chaîne unicode en chaîne?

0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079 

should be (according to this website: http://rishida.net/tools/conversion/) 

S O S (L) : S h i m i n F a i r y l a n d W e s t R d , 
H u i c h e n g , H u i z h o u , 
G u a n g d o n g (N 2 3 . 1 1 1 , E 1 1 4 . 4 1 1) N e a r b y 

Comment puis-je parvenir en PHP?

Répondre

0

Vous devez d'abord exploser chaque chaîne, puis ajouter &#x sur chaque chaîne pour pouvoir utiliser html_entity_decode(). Considérez cet exemple:

$string = '0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079'; 

$final_string = ''; 
foreach(explode(' ', $string) as $string) { 
    $final_string .= html_entity_decode('&#x' . trim($string)); 
} 

echo $final_string; 
// SOS(L):Shimin Fairyland West Rd,Huicheng,Huizhou,Guangdong(N23.111,E114.411)Nearby 
+0

supprimés codes insensées – user1978142

+0

de Merci, qui a travaillé. De toute façon pour convertir les entités html en quelque chose qui peut être lu sur un terminal UNIX? J'ai essayé de convertir en utf-8 sans succès jusqu'ici ... – MagisterMundus

+0

@MagisterMundus dans ce cas son au format HTML, mais en termes de CLI, c'est une autre histoire, puisque cet équivalent unicode est pour le html seulement, oui. Naturellement ce travail ne fonctionnera pas, je pense que pour cli c'est quelque chose comme 'u0053 quelque chose, vous pouvez google vous-même aussi car je ne les mémorise pas tous – user1978142

1

Je pris @ user1978142 code et modifié un peu il afficherait bien sur mon terminal MAC.

Voici une version de travail:

<?php 

$string = '0053 004F 0053 0028 004C 0029 003A 0053 0068 0069 006D 0069 006E 0020 0046 0061 0069 
0072 0079 006C 0061 006E 0064 0020 0057 0065 0073 0074 0020 0052 0064 002C 0048 0075 
0069 0063 0068 0065 006E 0067 002C 0048 0075 0069 007A 0068 006F 0075 002C 0047 0075 
0061 006E 0067 0064 006F 006E 0067 0028 004E 0032 0033 002E 0031 0031 0031 002C 0045 
0031 0031 0034 002E 0034 0031 0031 0029 004E 0065 0061 0072 0062 0079'; 

$final_string = ''; 
foreach(explode(' ', $string) as $string) { 
    $final_string .= chr('0x'.$string); 
} 

echo "\n".$final_string."\n"; 
?> 
Questions connexes