2011-02-07 5 views
20

У меня есть строка $str, и я хочу, чтобы проверить, если она `s содержание имеет китайские символы или нет (истина/ложь)проверка Php, если строка имеет китайские символы

$str = "赕就可消垻,只有当所有方块都被消垻时才可以过关"; 

Пожалуйста, вы можете мне помочь?

Спасибо! Адриан

+1

Что это за символ? UTF-8 или один из местных? –

+0

@Pekka charset = utf-8 – Adrian

+0

Возможный дубликат [Обнаружение китайского (многобайтового) символа в строке] (http://stackoverflow.com/questions/1550950/detect-chinese-multibyte-character-in-the-string) –

ответ

45

Вы можете использовать класс юникода характер http://www.regular-expressions.info/unicode.html

preg_match("/\p{Han}+/u", $utf8_str); 

Это просто проверяет наличие по крайней мере одного китайского характера. Вы можете захотеть расширить его, если хотите совместить полную строку.

+0

Отличный ответ. Не знал, что вы можете идентифицировать unicode через регулярное выражение! – Peter

+0

@Peter: Это немного недавно. Зависит от версии, но совместимость с Unicode 'PCRE_VERSION' должна быть объединена с PHP4. – mario

+0

IIRC, это также зависит от библиотеки PCRE на сервере с включенной обработкой Unicode. Но он должен присутствовать на большинстве современных серверов. –

1

Это link на предыдущий вопрос определения упрощенных или традиционный китайский может дать вам некоторые идеи ... вы на самом деле не указать, какие вы имеете в виду, и я не знаю китайского достаточно хорошо, чтобы понять разницу

+0

Эй, это отличная идея и имеет меньше зависимостей, чем Unicode Regex. +1 –

+0

@Pekka - Я должен признаться, я был удивлен, что он действительно сработал (даже если ему понадобилась небольшая помощь от bobince с настоящими кодировками) ... только одна из тех теорий, которые у меня никогда не было шанс попробовать на практике. –

2

@mario ответ правильный!

Для китайских символов использовать это регулярное выражение: /[\x{4e00}-\x{9fa5}]+/u

И не забудьте модификатор u !!!

u О Модификатор reference

ТКС Марио

0

Regex для обеспечения возможности только китайских иероглифов с максимальным и минимальным 10 2 китайских иероглифов

/^\p{Han}{2,10}+$/u 

Используйте это регулярное выражение, которое допускает только китайский символ.

  1. Это позволяет китайский иероглиф только &
  2. Это позволяет Минимум 2 символа &
  3. Это позволяет максимум 10 персонажу

Вы можете изменить минимальный и максимальный характер, изменяя {2,10}, как в соответствии с вашими потребностями.

\ р & очень важно добавить, пожалуйста, не избежать, чтобы добавить его.

Смежные вопросы