P.S если в регулярных выражениях используются русские символы, то надо всегда ставить модификатор u, чтобы после не искать ошибку там, где её нет.
<?php
echo preg_match("/и/i", "И"); // Возвращает false вместо true
echo preg_match("/[а-я]/", "И"); // Возвращает true вместо false
echo preg_match("/[а-я]/i", "И"); // Работает правильно
?>
Как видите, работают регулярные выражения с русскими символами весьма странно. Решить быстро эти проблемы позволяет модификатор u:
<?php
echo preg_match("/и/ui", "И"); // Работает правильно
echo preg_match("/[а-я]/u", "И"); // Работает правильно
echo preg_match("/[а-я]/ui", "И"); // Работает правильно
?>