【发布时间】:2015-10-02 12:02:18
【问题描述】:
我正在尝试替换以下字符串:
\u0080\u009锥形手尺\u0080\u009d
由于我必须为许多字符串替换这些代码,并且由于 \u0080\u009 有各种组合,例如 \u00e2\u0080\u0099 和 \u00a0,因此我已经搜索了一种解决方案,将它们全部转换回相应的值。
我找到的解决方案发布在这个网站上:http://www.avoid.org/replace-u-characters-in-json-string/
preg_replace("/\\\\u([a-f0-9]{4})/e",
"iconv('UCS-4LE','UTF-8', pack('V', hexdec('U$1')))",
json_encode($struct));
当我尝试使用此代码时,php 抛出了以下错误:
不推荐使用:preg_replace():不推荐使用 /e 修饰符,请使用 preg_replace_callback 代替
由于我是 php 的相对新手,所以我首先理解 preg_replace,但是转换为 preg_replace_callback 我完全过度紧张。我查过How to convert preg_replace e to preg_replace_callback?,但没明白:/
有人能解释一下如何将我的 preg_replace 转换为 preg_replace_callback 吗?
我试图开始工作的代码现在看起来像这样:
$string = preg_replace("/\\\\u([a-f0-9]{4})",
function($match){
return = iconv('UCS-4LE','UTF-8',pack('V', hexdec('U$1')), $match[1]);
},
json_encode($string));
我已阅读并了解如何访问我找到的匹配项,但自从
"iconv('UCS-4LE','UTF-8', pack('V', hexdec('U$1')))",
从原始代码中没有访问任何匹配项发现我很困惑如何设置我的匿名函数
【问题讨论】:
标签: php preg-replace preg-replace-callback