php - 删除除ascii和表情符号之外的所有内容

时间:2015-11-30 14:55:42

标签: php regex emoji

我想清理一个字符串,只留下ASCII字符,我想留下表情符号!

目前,我们采用了一种愚蠢的白名单方式:

1dp

有没有办法让一大群表情符号通过过滤器?

目前我们的php配置没有设置 preg_replace('/[^(\x20-\x7F,☠,♥)]*/','', $text); 值。例如我们拥有mbstring。不确定这是否有所作为。

1 个答案:

答案 0 :(得分:1)

首先,(,)在字符类中没有特殊含义,如果使用量词*,您的模式将在每个位置成功在字符串中(空匹配)。

如果你想保留表情符号,你只需要将它们放在你的否定角色类中。显然,不是在字符类中逐个放置它们,而是使用范围,如下所示:

/[^\x20-\x7F-☠♥]+/u

您可以在此处选择您感兴趣的范围:https://en.wikipedia.org/wiki/Emoji

请注意,由于您正在处理unicode字符,因此必须使用u修饰符。