仅选择中文,仅限日语和仅限韩语在mysql/php中记录

3se*_*nds 5 php mysql utf-8 cjk

有没有办法选择只有中文,只有日文和只有韩文的mysql单词?

用英语可以通过以下方式完成:

SELECT * FROM table WHERE field REGEXP '[a-zA-Z0-9]'

甚至像"脏"的解决方案:

SELECT * FROM table WHERE field > "0" AND field <"ZZZZZZZZ"

东方语言/ CJK字符是否有类似的解决方案?

据我所知,中文和日文共享字符,因此使用这些字符的日语单词有可能被误认为是中文单词.我猜这些话不会被过滤掉.

单词存储在utf-8字符串字段中.

如果这不能在mysql中完成,可以在PHP中完成吗?

谢谢!:)

编辑1:数据不包括字符串的语言,因此我无法通过其他字段进行过滤. 编辑2:使用像bing这样的翻译api(google正在关闭他们的翻译api)是一个有趣的想法,但我希望有一个更快的正则表达式解决方案.

bor*_*ble 3

MySQL 正则表达式不直接支持搜索 UTF-8 范围的字符。请参阅regexp的 mySQL 参考,其中指出:

警告 REGEXP 和 RLIKE 运算符以字节方式工作,因此它们不是多字节安全的,并且可能会使用多字节字符集产生意外结果。

幸运的是,在 PHP 中你可以构建这样的正则表达式,例如

/[\x{1234}-\x{5678}]*/u
Run Code Online (Sandbox Code Playgroud)

(注意u正则表达式末尾的 )。因此,您需要找到适合您的不同语言的范围。使用unicode 代码图表将使您能够为该语言选择适当的脚本(尽管不是直接选择语言本身)。