str_replace为UTF-16字符

时间:2016-06-23 13:32:26

标签: php string unicode

我有一些包含\x{1f601}字符的字符串,我想用一些文字替换它。

当我使用preg_replace执行此操作时,它将类似于:

preg_replace('/\x{1f601}/u', '######', $str)

但是,这似乎不适用于str_replace:

str_replace("\x{1f601}", '######', $str)

如何使用str_replace进行此类替换?

1 个答案:

答案 0 :(得分:2)

preg_replace是一个正则表达式解析器/替换器,它是一个Perl正则表达式引擎,但str_replace NOT 并用明文方法替换

您可以在regex101中看到您所拥有的Preg_replace,并说明:

  

匹配字符集中位置为0x1f601(128513十进制或373001八进制)的字符

但这可以转移到非正则表达式查找和替换,通过复制和粘贴面向笑脸符号直接进入str_replace。

$str = str_replace("", '######', $str)

或者,通过阅读deceze's comment,它为您提供了一个干净,小巧的解决方案。

其他

您正在使用非标准的字符集,因此您可能有助于浏览Mb_Str_replace(gitHub),它是mb_string PHP集合的陪伴(但不是直接来自)功能。

<强>最后:

为什么在你正在使用正则表达式preg_replace时需要进行字符串替换?另请阅读手册,其中陈述所有相关内容。