PHP相当于Java的unescapeJava()函数

时间:2012-12-10 14:37:58

标签: php unicode character-encoding

以下Java函数的PHP等价物是什么?

str = org.apache.commons.lang.StringEscapeUtils.unescapeJava(str);

此功能存在于Apache Commons Lang中,以下是功能

的说明
  

Unescapes在String中找到的任何Java文字。例如,它会   将'\'和'n'的序列转换为换行符,除非   '\'前面有另一个'\'。

修改

我找到的一个解决方案是

echo json_decode('"' . $str . '"');

但我认为应该有一些其他优雅的解决方案。

修改2

正如@julp所建议的,transliterate是另一种选择,但它仅适用于PHP 5.4及更高版本。不幸的是我仍然使用PHP 5.3并且需要一个可以在PHP 5.3中运行的解决方案

2 个答案:

答案 0 :(得分:3)

使用PHP> = 5.4和intl扩展名,您有Transliterator class:

$in = '\u0041\U00000062';
$out = transliterator_create('Hex-Any')->transliterate($in);
var_dump($out); # string(2) "Ab"

答案 1 :(得分:0)

PHP strings是Java字节数组的等价物。它们(按照定义)是256位字符集(字节0x00-0xff )。但是,PHP字符串语法已经在双引号字符串(see the manual page for more details)中提供了某些转义字符序列的插值。

但是,如果您正在接收JSON编码的字符串,则json_decode函数会将该字符串正确解码为PHP(前提是它符合JSON规范)。

$json_string = '"Hello\nWorld"';
var_dump(json_decode($json_string));
/*
Notice that the string output is 11 characters long and a line break character is present

string(11) "Hello
World"
*/