Всё правильно выводит, не считая "ения". preg_match() в matches пишет под ключ n совпадение с номером n. А под ключём 0 вся строка, что подходит под шаблон. У меня тоже бывали проблемы с кириллицей, даже
u
не помогал. Разбираться я с этим не стал, времени не было, поэтому решал задачу так: составлял строку из русского алфавита во двух регистрах и вместо
'[a-zA-Zа-яА-Я]'
писал
'[a-zA-Z'. $abc .']'
, где $abc - строка из русского алфавита в двух регистрах. Разделители и модификаторы расставишь сам)
Если ты хочешь найти более двух совпадений, тогда используй
preg_match_all()