Ако имате проблем с preg_match

Здравейте. Искам да споделя наученото днес, за да може който има проблем да го реши бързо а не да се лута цял ден. Ако искате да използвате правило за валидиране например:

public function rules()

{


	return array(


	........


	array('tags', 'match', 'pattern'=>'/^[a-zA-Zа-яА-Я,]+$/', 'message'=>'Tags can only contain word characters.'),


	.....


}

То проверява дали в полето Tags са въведени само букви и символа запетая. Ако пробвате това няма да работи за символи на кирилица при енкодинг UTF-8. Решението на проблема е много просто - добавяте модификатора u към регулярния израз:

public function rules()

{


	return array(


	........


	array('tags', 'match', 'pattern'=>'/^[a-zA-Zа-яА-Я,]+$/u', 'message'=>'Tags can only contain word characters.'),


	.....


}

Ако не се лъжа, следният вариант също ще работи (insensitive):

‘pattern’=>’/^[a-zа-я,]+$/ui’

А за всякакви операции с UFT8 кирилица (понеже е по 2 байта и за това се скофтва), може да се ползват multibyte функции.

http://bg2.php.net/manual/en/ref.mbstring.php

ps - тепърва ще разучавам Yii и се радвам, че има и БГ секция.

Поздрави.