我需要删除除了空格和允许的表情符号以外的所有非字母数字字符。
允许使用的表情符号包括:)
,:(
,:P
等(最常见的)。
我有一个字符串:
$string = 'Hi! Glad # to _ see : you :)';
我需要处理这个字符串并得到以下结果:
$string = 'Hi Glad to see you :)';
此外,请注意表情符号可以包含空格
例如。
: ) 代替 :)
或者
: P 代替 :P
有没有函数可以做到这一点?
如果有人帮助我,那就太棒了 :)
更新
非常感谢您的帮助。
buckley提供了现成的解决方案,
但是如果字符串中包含带有空格的表情符号
例如。 Hi! Glad # to _ see : you : )
结果等于 Hi Glad to see you
正如您所看到的,表情符号 : )被截断了。
preg_replace("**/[^a-zA-Z0-9\s*]/**", '', $string);
会执行吗? - chris85*
被读取为前导分隔符,而下一个*
被读取为结束分隔符,这使得/
成为了一个它本不应该是的修饰符。您可以在此处阅读有关分隔符的更多信息,http://php.net/manual/en/regexp.reference.delimiters.php。我认为下面的正则表达式应该能够实现您想要的功能,这只是未来参考的一条注释。 - chris85