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 修饰符。
我想清理一个字符串,只留下 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 修饰符。