1

以下 Java 函数的 PHP 等效项是什么?

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

此函数存在于Apache Commons Lang中,以下是该函数的描述

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

编辑

我发现的一个解决方案是这个

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

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

编辑 2

正如@julp 建议的那样,transliterate这是另一种选择,但它仅适用于 PHP 5.4 及更高版本。不幸的是,我仍在使用 PHP 5.3,需要一个适用于 PHP 5.3 的解决方案

4

2 回答 2

3

使用 PHP >= 5.4 和国际扩展,你有Transliterator类:

$in = '\u0041\U00000062';
$out = transliterator_create('Hex-Any')->transliterate($in);
var_dump($out); # string(2) "Ab"
于 2012-12-10T15:00:06.047 回答
0

PHP 字符串是 Java 字节数组的等价物。它们(根据定义)是 256 位字符集(字节 0x00-0xff)。但是,PHP 字符串语法已经在双引号字符串中提供了某些转义字符序列的插值(有关更多详细信息,请参见手册页)。

但是,如果您接收的是 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"
*/
于 2012-12-10T14:49:55.820 回答