【发布时间】:2012-11-27 23:47:40
【问题描述】:
以下 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 的解决方案
【问题讨论】:
-
PHP 使用双引号内的字符串自动执行此操作
" -
@Dale 当我有
\u2002等 unicode 字符时它不会这样做。 -
@Sudar php 不支持
\uxxxx-escape 序列 -
@Esailija 虽然 PHP 字符串语法不支持 unicode 转义序列,但 PHP 的 json_decode 函数会将这些字符正确解码为有效字节。例如
var_dump(json_decode('"\u2002"'));将返回一个正确表示这些 unicode 字节的 3 字节字符串。 -
@GoogleGuy 是的,但没那么简单,你现在需要
escapeJSONString函数
标签: php unicode character-encoding