php - 去掉除 ascii 和 emoji 之外的所有内容

php - strip a string of everything except ascii and emoji

我想清理一个字符串,只留下 ASCII 字符但是另外,我想保留表情符号!

目前,我们有一个愚蠢的白名单方法:

preg_replace('/[^(\x20-\x7F,☠,♥)]*/','', $text);

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

目前我们的 php 配置没有设置 mbstring 值。例如我们没有 mbstring.internal_encoding = UTF-8。不确定这是否有所作为。

首先,(,)在字符class中没有特殊意义,如果你使用量词*,你的pattern 将在字符串中的每个位置成功(匹配为空)。

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

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

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

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