Как определить язык сайта по контенту

Тема в разделе "PHP", создана пользователем EugeneVC, 28 ноя 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. EugeneVC

    EugeneVC

    Регистр.:
    28 окт 2007
    Сообщения:
    297
    Симпатии:
    83
    Имееется список URL. Хочется разделить его на 3 категории : русские, английские и украинские сайты.

    Далее получаю контент:

    Код:
    $content=file_get_contents($url);
    Как по переменной $content узнать язык сайта? Есть какие нибуть либы?
     
  2. akhkharu

    akhkharu Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    111
    Симпатии:
    12
  3. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Например по кодировке страницы и через Google language API:

    PHP:
    <? 
        
    $url "http://www.nulled.ru";
        
    $page file_get_contents($url);
         
        
    /* character set */
        
    preg_match'@<meta\s+http-equiv="Content-Type"\s+content="([\w/]+)(;\s+charset=([^\s"]+))?@i',
            
    $page$matches );
        if ( isset( 
    $matches[1] ) )
            
    $mime $matches[1];
        if ( isset( 
    $matches[3] ) )
            
    $charset $matches[3];


        
    $search = array('@<script[^>]*?>.*?</script>@si',  // Strip out javascript
                       
    '@<style[^>]*?>.*?</style>@siU',    // Strip style tags properly
                       
    '@<[\/\!]*?[^<>]*?>@si',            // Strip out HTML tags
                       
    '@<![\s\S]*?--[ \t\n\r]*>@'         // Strip multi-line comments including CDATA
        
    );

        
    $content substr(preg_replace($search''$page) ,,200);
        
    //or
        //$content = substr(strip_tags($page) ,0 ,200);
        
    $content_detect_language urlencode(iconv($charset"UTF-8"$content));
        
        
    //powered by Google
        
    $detect_language_url "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=".$content_detect_language;
        
    $json file_get_contents($detect_language_url);
        
    $object json_decode($json,true);
        echo 
    $charset.', '.$object['responseData']['language'];
    ?>
     
    eliteMAN, Levitt и EugeneVC нравится это.
  4. EugeneVC

    EugeneVC

    Регистр.:
    28 окт 2007
    Сообщения:
    297
    Симпатии:
    83
    Во то, что доктор прописал. Буду пробовать. А вот по кодировке сайта я думаю не пойдет, кодировка может быть cp1251, а сайт полностью на английском.
     
  5. Liver

    Liver

    Регистр.:
    24 сен 2008
    Сообщения:
    316
    Симпатии:
    91
  6. kuka4a

    kuka4a Постоялец

    Регистр.:
    3 окт 2006
    Сообщения:
    105
    Симпатии:
    6
    Самое простое решение в лоб, на коленке (и процентов на 90 правильно определяющее) - это

    1. считаем буквы э, і, ї - если их достаточно много, это украинский
    2. считаем буквы а и е русские, и буквы a и e английские. Если русских больше - текст русский. А иначе - английский.
     
  7. EugeneVC

    EugeneVC

    Регистр.:
    28 окт 2007
    Сообщения:
    297
    Симпатии:
    83
    Такое простое решение требует правильного определения кодировки сайта, а то cp1251, koi8r и cp866 будут по разному ранжироваться.

    PS: всем спасибо - буду пробовать
     
Статус темы:
Закрыта.