2014-06-27 158 views
0

我有一个GPS这一个Unicode字符串格式返回地址,例如:PHP - 将unicode字符串转换为字符串?

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 

我如何在PHP中实现这一目标?

回答

0

您需要首先分解每个字符串,然后在每个字符串上附加&#x,以便您可以使用html_entity_decode()。考虑这个例子:

$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

去除无谓的代码 – user1978142

+0

谢谢,这工作。无论如何将html实体转换为可以在UNIX终端上读取的东西?我试图转换到utf-8到目前为止没有成功...... – MagisterMundus

+0

@MagisterMundus在这种情况下它的HTML格式,但在CLI方面,它的另一个故事,因为这个unicode等价物仅适用于html,是的。自然这不会工作,我认为cli它的东西像'\ u0053'什么的,你也可以自己谷歌它,因为我不记住他们 – user1978142

1

我拿@ user1978142代码,并修改了一下,所以它会显示在我的MAC终端罚款。

这里是一个工作版本:

<?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"; 
?>