Обнаружение символов CJK в PHP - PullRequest
3 голосов
/ 08 апреля 2010

У меня есть поле ввода, которое позволяет вводить символы UTF8 - могу ли я определить, являются ли символы на китайском, японском или корейском программно (возможно, частью некоторого диапазона Unicode)? Я бы изменил методы поиска в зависимости от того, будет ли работать полнотекстовый поиск MySQL (он не будет работать для символов CJK).

Спасибо!

Ответы [ 3 ]

3 голосов
/ 08 апреля 2010

Символы CJK ограничены определенными блоками Unicode .Вам необходимо проверить символы, если они находятся внутри этих блоков, а также учитывать суррогаты (32-битные символы).

3 голосов
/ 11 декабря 2017
// is chinese, japanese or korean language
function isCjk($string) {
    return isChinese($string) || isJapanese($string) || isKorean($string);
}

function isChinese($string) {
    return preg_match("/\p{Han}+/u", $string);
}

function isJapanese($string) {
    return preg_match('/[\x{4E00}-\x{9FBF}\x{3040}-\x{309F}\x{30A0}-\x{30FF}]/u', $string);
}

function isKorean($string) {
    return preg_match('/[\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]/u', $string);
}
1 голос
/ 08 апреля 2010

Вы хотите определить, является ли символ (китайским, японским или корейским)?Или вы хотите отличить китайские иероглифы от японских?Первое легко;последнее во многих случаях невозможно из-за объединения Хань.

...