我想清理一个字符串,只留下ASCII字符但,我想留下表情符号!
目前,我们采用了一种愚蠢的白名单方式:
1dp
有没有办法让一大群表情符号通过过滤器?
目前我们的php配置没有设置
preg_replace('/[^(\x20-\x7F,☠,♥)]*/','', $text);
值。例如我们不拥有mbstring
。不确定这是否有所作为。
答案 0 :(得分:1)
首先,(
,,
,)
在字符类中没有特殊含义,如果使用量词*
,您的模式将在每个位置成功在字符串中(空匹配)。
如果你想保留表情符号,你只需要将它们放在你的否定角色类中。显然,不是在字符类中逐个放置它们,而是使用范围,如下所示:
/[^\x20-\x7F-☠♥]+/u
您可以在此处选择您感兴趣的范围:https://en.wikipedia.org/wiki/Emoji
请注意,由于您正在处理unicode字符,因此必须使用u修饰符。