Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Падежи или склонение слов по суффиксам в PHP

Ден Але Ученик (60), на голосовании 1 год назад
Всем привет! Такая задача:
Есть слово "Бежит"
Как в PHP сделать так, что бы при вводе вышеуказанного слова (Бежит) в форму и отправки - выдавало вот так: Бег, Бегает, Бежать и т. д.
Функция интересная, но не могу ее реализовать. За ранее спасибо!
Дополнен 1 год назад
Добавлю что вместо слова "Бежит", может быть любое другое слово..
Голосование за лучший ответ
EVK IT Сервис К Мыслитель (5226) 1 год назад
Здесь нужно или использовать готовый сервис с API или самому набивать словарь array() и проверять падежи если слов много
Ден АлеУченик (60) 1 год назад
ну слово может быть совершенно любым)
думаю все равно алгоритм возможно какой то реализовать)))
EVK IT Сервис К Мыслитель (5226) Денис Хабибуллин, Яндекс.API можно использовать
Олег Че Мудрец (10833) 1 год назад
Для решения этой задачи можно воспользоваться функцией preg_replace, которая позволяет заменять совпадения регулярного выражения на заданную строку. Вот пример кода, который заменит слово "Бежит" на слова "Бег", "Бегает", "Бежать" и т.д.:

$word = 'Бежит'; // вместо этого слова может быть любое другое

// массив возможных окончаний
$suffixes = array('ет', 'ут', 'ит', 'ат', 'ят', 'ть');

// регулярное выражение, которое ищет слово "Бежит"
$pattern = '/\b' . preg_quote($word) . '\b/iu';

// заменяем слово "Бежит" на все возможные формы глагола
$result = preg_replace_callback($pattern, function($match) use ($suffixes) {
$stem = mb_substr($match[0], 0, -4); // основа слова без окончания "ит"
$forms = array_map(function($s) use ($stem) { return $stem . $s; }, $suffixes); // все возможные формы
return implode(', ', $forms); // объединяем формы через запятую
}, $word);

echo $result; // выводим результат

Также можно добавить дополнительную проверку, чтобы функция работала корректно для разных словоформ.
Похожие вопросы