Получить язык сайта, используя простой HTML-дом

Я создаю поисковую систему и веб-сканер с использованием PHP, и я хотел бы определить язык веб-сайта, как бы я определил язык страницы с помощью:

  1. Проверка URL для https://twitter.com/?lang=jap
    если это не установлено, то я хотел бы:
  2. Проверьте URL https://www.google.co.jp/

если я все еще не могу найти что-то, то я бы установил по умолчанию английский

код, который у меня есть для очистки страниц:

function crawl($url){
$html = file_get_html($url);
if($html && is_object($html) && isset($html->nodes)){
$weblinks[]=$url;
foreach($html->find('a') as $element) {
global $weblinks;
$link = $element->href;
$base_url = parse_url($url, PHP_URL_HOST);
if(substr($link,0,7)=="http://"){
$link = $link;
}else if(substr($link,0,8)=="https://"){
$link = $link;
}else if(substr($link,0,2)=="//"){
$link = substr($link, 2);
}else if(substr($link,0,1)=="#"){
$link = $html;
}else if(substr($link,0,7)=="mailto:"){
$link = "";
}else if(substr($link,0,11)=="javascript:"){
$link = "";
}else{
if(substr($link, 0, 1) != "/"){
$link = $base_url."/".$link;
}else{
$link = $base_url . $link;
}
}
if(substr($link, 0, 7) != "http://" && substr($link, 0, 8) != "https://" && $link != ""){
if(substr($url, 0, 8) == "https://"){
$link = "https://".$link;
}else{
$link = "http://".$link;
}
}
if(!in_array($link, $weblinks)){
$weblinks[]=$link;
}
}
$html->clear();
}else{

}
}
function info($weblinks){
foreach($weblinks as $link) {
$linkhtml = file_get_html("$link");
if($linkhtml && is_object($linkhtml) && isset($linkhtml->nodes)){

$titleraw = $linkhtml->find('title',0);
$title = $titleraw->innertext;
$des = $linkhtml->find("meta[name='description']",0)->content;//detect language here

echo "<tr><td>".$title."</td><td>".$link."</td><td>".$des."</td></tr>";
$sql = mysql_query("INSERT into web once");
$title = "";
$des = "";
$linkhtml->clear();
}
}

}

-1

Решение

Чтобы получить язык от ?lang=:

$url = 'www.domain.org?lang=IT';
$url_parts = parse_url($url);
$lang = parse_str($url_parts['lang']);

Затем вы должны проверить это с помощью инструкции switch / case и списка поддерживаемых языков, например:

switch ($lang) {
case 'EN':
//language is English
break;
case 'IT':
//language is Italian
break;
case 'FR':
//language is French
break;
default:
//?lang query was empty, or contained an unsupported language
$lang = FALSE;
} //end switch

После этого вы можете использовать эту логику, чтобы определить, нужно ли проверять URL для языка:

if ($lang == FALSE) {
//code to determine language from TLD
}

Надеюсь, это поможет вам начать, хотя это большая банка червей, которую вы открываете. Есть и другие вещи, которые вы должны проверить, чтобы быть уверенным в языке сайта в дополнение к тому, что вы упомянули. Одним из них является метатег языка, который выглядит так: <meta name="language" content="english"> и идет в заголовке веб-страницы, хотя не все веб-сайты используют его.

Некоторые многоязычные сайты, такие как мой, используют субдомен, такой как http://it.website.com или же http://fr.website.com

Другие используют строки запроса, которые отличаются от ?lang=, Так что вам нужно будет провести значительный объем исследований, чтобы охватить все ваши базы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]