получить заголовок страницы, используя простой HTML-дом? - PullRequest
0 голосов
/ 09 января 2012

Я пытаюсь получить заголовок с внешнего сайта, используя простой html dom (заголовок страницы между тегами TITLE), но ничего не получается.Есть идеи?

$html = new simple_html_dom();
$html->load('http://www.google.com');
$titleraw = $html->find('title');
$title = $titleraw->title;

Ответы [ 8 ]

2 голосов
/ 05 февраля 2013
$html = new simple_html_dom();
$html->load_file('http://www.google.com'); 
$titleraw = $html->find('title',0);
$title = $titleraw->innertext;

$html->load_file() Загружает содержимое из файла или URL.

$html->find('title') вернет массив

и $titleraw->innertext возвращает содержимое элемента заголовка

2 голосов
/ 09 января 2012

->load() ожидает строку, содержащую HTML, а не URL.

Попробуйте:

$html = file_get_html('http://google.com');

вместо.

Кроме того, обратите внимание, что Google ToS запрещает скребки экрана, так что, надеюсь, вы просто используете этот URL в качестве примера для заполнения, а не то, что вы действительно пытаетесь очистить.

1 голос
/ 25 октября 2017

Используйте это

$html = new simple_html_dom();  
$html->load('http://www.google.com');
$titleraw = $html->find('title');
foreach($html->find('title') as $link_element) {        
    echo $link_element->plaintext;
}

вместо $title = $titleraw->title;

1 голос
/ 30 мая 2014

Просто

$mypage=file_get_html('http://myurl.com');
$title=$mypage->find('title',0);
echo $title->plaintext;
1 голос
/ 09 января 2012
if(
  preg_match(
    '~<title>(.*)</title>~si',
    file_get_contents('http://www.google.com'),
    $result
  );
  var_dump($result[1]);
}else{ /* no result */ }

Остальное

$titleraw = $html->xpath('//title');
0 голосов
/ 20 сентября 2013

попробуйте

$html = new simple_html_dom()
$data = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('title') as $element)
       echo $element->plaitext . '<br>';
0 голосов
/ 20 сентября 2013

Попробуйте

include_once 'simple_html_dom.php';
$oHtml = str_get_html($url);
$Title = array_shift($oHtml->find('title'))->innertext;
$Description = array_shift($oHtml->find("meta[name='description']"))->content;
$keywords = array_shift($oHtml->find("meta[name='keywords']"))->content;
echo $title;
echo $Description;
echo $keywords;
0 голосов
/ 09 января 2012

Используя DOM и xpath, вы можете сделать:

function getTitle($url) {
   libxml_use_internal_errors(true);
   $doc = new DOMDocument();
   $doc->loadHTMLFile($url);
   $xpath = new DOMXPath($doc);
   $nlist = $xpath->query("//head/title");
   return $nlist->item(0)->nodeValue;
}
echo "Title: " . getTitle("http://www.google.com") . "\n";
...