php: строка parse из html

Я открыл HTML-файл, используя

file_get_contents('http://www.example.com/file.html') 

и хотите проанализировать строку, включая «ParseThis»:

  <h1 class=\"header\">ParseThis<\/h1> 

Как вы можете видеть, он находится в теге h1 (первый тег h1 из файла). Как я могу получить текст «ParseThis»?

Вы можете использовать DOM для этого.

 // Load remote file, supress parse errors libxml_use_internal_errors(TRUE); $dom = new DOMDocument; $dom->loadHTMLFile('http://www.example.com/file.html'); libxml_clear_errors(); // use XPath to find all nodes with a class attribute of header $xp = new DOMXpath($dom); $nodes = $xp->query('//h1[@class="header"]'); // output first item's content echo $nodes->item(0)->nodeValue; 

Также см

  • Лучшие методы анализа HTML
  • Больше примеров у меня с DOM.

Пометка этого CW, потому что я ответил на это раньше, но я слишком ленив, чтобы найти дубликат

Используйте эту функцию.

 <?php function get_string_between($string, $start, $end) { $string = " ".$string; $ini = strpos($string,$start); if ($ini == 0) return ""; $ini += strlen($start); $len = strpos($string,$end,$ini) - $ini; return substr($string,$ini,$len); } $data = file_get_contents('http://www.example.com/file.html'); echo get_string_between($data, '<h1 class=\"header\">', '<\/h1>'); 

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

 $doc = new DOMDocument(); $doc->loadHTML($html); $h1 = $doc->getElementsByTagName('h1'); echo $h1->item(0)->nodeValue; 

http://php.net/manual/en/class.domdocument.php