Kuk*_*osk 5 php regex unicode emoji
我正在尝试在我的PHP代码中检测表情符号,并阻止用户输入它.
我的代码是:
if(preg_match('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', $value) > 0)
{
//warning...
}
Run Code Online (Sandbox Code Playgroud)
但不适用于所有表情符号.有任何想法吗?
bob*_*nce 10
if(preg_match('/\xEE[\x80-\xBF][\x80-\xBF]|\xEF[\x81-\x83][\x80-\xBF]/', $value)
Run Code Online (Sandbox Code Playgroud)
您确实希望在字符级别匹配Unicode,而不是尝试跟踪UTF-8字节序列.使用u修饰符可以基于字符处理UTF-8字符串.
表情符号在块U + 1F300-U + 1F5FF中编码.然而:
日本运营商''表情符号'集合中的许多字符实际上映射到现有的Unicode符号,例如卡套装,十二生肖和一些箭头.你现在把这些符号算作'表情符号'吗?
仍有系统不使用新标准化的Unicode表情符号代码点,而是使用专用区域中的ad-hoc范围.每个运营商都有自己的编码.iOS 4使用了Softbank集.更多信息.您可能希望阻止整个私人使用区域.
例如:
function unichr($i) {
return iconv('UCS-4LE', 'UTF-8', pack('V', $i));
}
if (preg_match('/['.
unichr(0x1F300).'-'.unichr(0x1F5FF).
unichr(0xE000).'-'.unichr(0xF8FF).
']/u'), $value) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7480 次 |
| 最近记录: |