我有一些包含\x{1f601}
字符的字符串,我想用一些文字替换它。
当我使用preg_replace执行此操作时,它将类似于:
preg_replace('/\x{1f601}/u', '######', $str)
但是,这似乎不适用于str_replace:
str_replace("\x{1f601}", '######', $str)
如何使用str_replace进行此类替换?
答案 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时需要进行字符串替换?另请阅读手册,其中陈述所有相关内容。