【发布时间】:2011-04-05 05:39:10
【问题描述】:
我使用
打开了一个 HTML 文件file_get_contents('http://www.example.com/file.html')
并且想要解析包含“ParseThis”的行:
<h1 class=\"header\">ParseThis<\/h1>
如您所见,它位于h1 标记内(文件中的第一个h1 标记)。如何获取文本“ParseThis”?
【问题讨论】:
我使用
打开了一个 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;
另见
标记这个CW,因为我之前回答过这个问题,但是我懒得找到重复的
【讨论】:
既然是第一个h1标签,获取它应该是相当简单的:
$doc = new DOMDocument();
$doc->loadHTML($html);
$h1 = $doc->getElementsByTagName('h1');
echo $h1->item(0)->nodeValue;
【讨论】:
使用此功能。
<?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>');
【讨论】:
get_string_between :)