2013-12-03 4 views
0

У меня возникли проблемы с совпадением символа â в строке.Вопрос о выпуске PHP Regex

Например

if (preg_match("/C[â]mera/i", "Câmera Canon ")) // returns false 

но

if (preg_match("/C[a]mera/i", "Camera Canon ")) // returns true 

Любая идея? почему он работает с, но не с? (Т. Е UTF-8)

Благодаря

+0

Вы проверили вы подаете кодировку? – Stony

+0

Вы имеете в виду кодирование файла .php? как мы его устанавливаем? –

ответ

3

Если вы работаете с юникод строк, вы должны использовать u флаг:

preg_match("/C[â]mera/iu", "Câmera Canon ") 

u (PCRE_UTF8)

Этот модификатор включает дополнительную функциональность PCRE, которая несовместима с Perl. Строки шаблонов рассматриваются как UTF-8. Этот модификатор доступен с PHP 4.1.0 или выше в Unix и с PHP 4.2.3 на win32. Срок действия шаблона UTF-8 проверяется с PHP 4.3.5.

+0

Спасибо. Оно работает! –

1

попробовать что-то вроде этого:

if (preg_match("/C[\pL00E2]mera/u", "Câmera Canon ")) 
+0

Это будет соответствовать 'preg_match ("/C [\ pL00E2] mera/u "," Cemera Canon ")' слишком f.ex. – pozs

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