删除表情符号/unicode 字符
Remove emojis / unicode chars
我的网站和数据库设置为 utf-8 和 utf8mb4。
在 textareas 上,当用户输入 utf-8 时完全没问题 symbols/emojis。
但在某些输入字段(姓名、地址等)上,我想消除那些 "funny symbols" 的可能性,并且只处理基本文本和数字,包括丹麦字符 æøå、重音符号和符号,例如 - _'@()?=,.:;!"#&<> 等
我该怎么做?
是否有一些本机 php 函数可以去除 unicode symbols/characters,或者我是否必须 find/make 一个特定的正则表达式函数?
有检查编码的函数:http://php.net/manual/en/function.mb-check-encoding.php 但要删除字符,我认为您需要使用正则表达式:
function StripNonUTF($str){
return preg_replace('/[^\pL\pM[:ascii:]]+/g', '', $str);
}
- \pL 匹配来自任何语言的任何类型的字母
- \pM 匹配要与另一个字符组合的字符(例如重音符号、变音符号、封闭框等)
- [:ascii:] 匹配 ASCII 值为 0 到 127
的字符
我的网站和数据库设置为 utf-8 和 utf8mb4。
在 textareas 上,当用户输入 utf-8 时完全没问题 symbols/emojis。
但在某些输入字段(姓名、地址等)上,我想消除那些 "funny symbols" 的可能性,并且只处理基本文本和数字,包括丹麦字符 æøå、重音符号和符号,例如 - _'@()?=,.:;!"#&<> 等
我该怎么做?
是否有一些本机 php 函数可以去除 unicode symbols/characters,或者我是否必须 find/make 一个特定的正则表达式函数?
有检查编码的函数:http://php.net/manual/en/function.mb-check-encoding.php 但要删除字符,我认为您需要使用正则表达式:
function StripNonUTF($str){
return preg_replace('/[^\pL\pM[:ascii:]]+/g', '', $str);
}
- \pL 匹配来自任何语言的任何类型的字母
- \pM 匹配要与另一个字符组合的字符(例如重音符号、变音符号、封闭框等)
- [:ascii:] 匹配 ASCII 值为 0 到 127 的字符