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

Статус
В этой теме нельзя размещать новые ответы.

EugeneVC

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

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

Код:
$content=file_get_contents($url);

Как по переменной $content узнать язык сайта? Есть какие нибуть либы?
 
Например по кодировке страницы и через 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) ,0 ,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'];
?>
 
Во то, что доктор прописал. Буду пробовать. А вот по кодировке сайта я думаю не пойдет, кодировка может быть cp1251, а сайт полностью на английском.
 
Самое простое решение в лоб, на коленке (и процентов на 90 правильно определяющее) - это

1. считаем буквы э, і, ї - если их достаточно много, это украинский
2. считаем буквы а и е русские, и буквы a и e английские. Если русских больше - текст русский. А иначе - английский.
 
Такое простое решение требует правильного определения кодировки сайта, а то cp1251, koi8r и cp866 будут по разному ранжироваться.

PS: всем спасибо - буду пробовать
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху