Обнаружение китайского (многобайтового) символа в строке

$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 ";

Как определить китайские символы в этой строке и распечатать часть, которая начинается с первого символа и заканчивается знаком «-»? (это будет «中文 символов. Еще несколько символов -»).

Спасибо!


person Community    schedule 11.10.2009    source источник


Ответы (2)


Я решил эту проблему с помощью preg_match и регулярных выражений:

$str = "This is a string containing 中文 characters. Some more characters - 中华人民共和国 ";

preg_match(/[\x{4e00}-\x{9fa5}]+.*\-/u, $str, $matches);
person Community    schedule 21.10.2009
comment
Спасибо за это ... любопытно, где документирована возможность использования \ x {unicode #}? - person philfreo; 19.10.2010

Сохраняет ли PHP это как Unicode? Если это так, в худшем случае вы можете пройти по строке, символ за символом, пока не найдете те, которые находятся в китайском диапазоне.

Проверьте это тоже PHP: Unicode - Руководство

person bugmagnet    schedule 11.10.2009
comment
@Josh - если вы последуете предложению boost, возможно, вы также захотите посмотреть ответ VonC на этот вопрос: stackoverflow.com/questions/1366068/ - person JV.; 11.10.2009
comment
@boost, да, php хранит строку в юникоде. Но как мне этого добиться? Я не очень хорошо разбираюсь в php. @JV, спасибо, я посмотрю. - person ; 11.10.2009
comment
если вы не конвертируете его в форму NCR, у него есть шанс повредить персонажей во время транзакций. - person Raptor; 20.10.2009