Квартиры, дома, земельные участки Краснодарского края без посредников. Объявления собственников недвижимости.
Реклама здесь
Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Склонятор - Функция склонения названий, имен и т.д.

Для выделения корня слова или различных словоформ лучше всего воспользоваться PHP - классом phpMorphy, который позволяет выделять корни слов с учетом морфологии русского, английского, украинского, эстонского или немецкого языков. Словари для каждого языка занимают 10-15 Мб. При этом не требуется устанавливать на сервер дополнительное программное обеспечение, все будет работать на самом обычном хостинге. Недостаток - низкая скрость выделения корня.


Слово для склонения:


<?php
$words
=urldecode($_GET['word']);

   
$path='lib/';

   
$words=preg_split('/[^a-zA-Zа-яА-Я0-9]+/'$words, -1PREG_SPLIT_NO_EMPTY);

   echo 
"Результат phpmorphy:";
    
// подключаем библиотеку phpmorphy
    
$morphy=$path.'phpmorphy/';
    require_once(
$morphy.'src/common.php');
    
$opts = array(
        
// PHPMORPHY_STORAGE_FILE - использовать файл
        // PHPMORPHY_STORAGE_SHM - загружать словать в общую память(нужно расширение shmop)
        // PHPMORPHY_STORAGE_MEM - загружать словать в общую память при каждой инициализации phpmorphy
        
'storage' => PHPMORPHY_STORAGE_FILE,
        
'predict_by_suffix' => true,
        
'predict_by_db' => true,
        
'graminfo_as_text' => true,
    );
    
$morphy = new phpMorphy($morphy.'dicts''ru_RU'$opts);


    foreach(
$words as $i=>$word)
    
$words[$i]=iconv('windows-1251'$morphy->getEncoding(), strtoupper($word)); // в utf-8

    
$awords=$morphy->getBaseForm($words);
        echo 
"<br> <br>\ngetBaseForm:<br>Получить начальную форму (Получить нормализованные слова)<br>".arr2str($awords);

    
$awords=$morphy->getPseudoRoot($words);
        echo 
"<br> <br>\ngetPseudoRoot:<br>получить корень слова<br>".arr2str($awords);

    
// Получить все словоформы
    
$awords $morphy->getAllForms($words);
        echo 
"<br> <br>\ngetAllForms:<br>Получить все словоформы<br>".arr2str($awords);

}

// функция вывода массива с преобразованием из utf-8 в windows-1251
function arr2str($arr,$level=0){
    
$str "array(<br>\n";
    foreach (
$arr as $key => $val) {
        if (
is_array($val)) {
           
$str.=str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;",$level)."'".iconv'utf-8''windows-1251',$key)."' => " .
        
arr2str($val,$level+1) . ",<br>\n";
        }else {
           
$str.=str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;",$level)."'".iconv'utf-8''windows-1251',$key)."' => '<b>" .
        
str_replace("'""\'"iconv'utf-8''windows-1251',$val)) . "</b>',<br>\n";
        }
}
return 
$str str_repeat("&nbsp;&nbsp;&nbsp;&nbsp;",$level).")";
}
?>
Скопировать в буфер

Пример использования склонятора имен и ников от яндекса

Пример создания поиска по своему сайту с учетом морфологии русского языка

© Copyright 2008-2012 by KDG