MrG*_*MrG 2 php user-interface
我正在开发一个支持多种语言的应用程序,并且具有一个功能,它试图使用浏览器请求的语言,并允许手动覆盖此功能.这部分工作正常,并选择正确的模板,标签等.
用户有时必须自己输入文本,这就是我遇到问题的地方,因为应用程序必须接受甚至是"复杂"的语言,如中文和俄文.到目前为止,我已经处理了其他帖子中提到的事情,即:
mb_internal_encoding( 'UTF-8' )meta http-equiv=Content-Type content=text/html;charset=UTF-8(格式由于stackoverflow限制而适应)mb_detect_encoding() == UTF-8setLocale(LC_CTYPE, "UTF-8"),这似乎不起作用,因为它需要选择一种语言,我无法指定,因为我必须支持几种语言.如果我手动强制进行测试,它仍然会失败,即; setLocale(LC_CTYPE,"zh__CN.utf8")- ctype_alpha()中文文本仍然会失败似乎即使是明确的语言选择也没有ctype_alpha()用.
因此问题是:我应该如何检查所有语言的字母字符?
我目前唯一的想法是手动检查"有效"字符数组 - 但这对中国人来说似乎很难看.
你会如何解决这个问题?
如果你想检查有效的unicode字母而不管使用的语言我建议使用正则表达式(如果你的pcre-regex扩展是使用unicode支持构建的):
// adjust pattern to your needs
// $input needs to be UTF-8 encoded
if (preg_match('/^\p{L}+$/u', $input)) {
// OK
} else {
// not OK
}
Run Code Online (Sandbox Code Playgroud)
\p{L}使用L(etter)属性检查unicode字符,该属性包括属性Ll(小写字母),Lm(修饰符字母),Lo(其他字母),Lt(标题大小写字母)和Lu(大写字母) - 来自:正则表达式详细信息).