你好,我发现很少,并尝试了一些,但没有什么对我有用。我发现的最好能够提取页面的标题,但页面上有许多标题标签,它只提取第一个。我需要它来提取所有标题。如果它也可以 这是代码:
<?php
$text = file_get_contents("http://www.example.com");
if (preg_match('~<title[^>]*>(.*?)</title>~si', $text, $body)){
echo $body[1];
}
?>
答案 0 :(得分:2)
试试这个解决方案
$text = file_get_contents("http://www.example.com");
preg_match_all('/<title>.*?<\/title>/is', $text, $matches);
foreach($matches[0] as $m)
{
echo htmlentities($m)."<br />";
}
例如:
// input text
$text = <<<EOT
<title>Lorem ipsum dolor</title>
sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua.
Ut enim <title>ad minim</title> veniam,
quis nostrud exercitation ullamco laboris nisi ut
aliquip <title>ex ea</title> commodo consequat.
EOT;
// solution
preg_match_all('/<title>(.+?)<\/title>/is', $text, $matches);
foreach($matches[0] as $m)
{
echo htmlentities($m)."<br />";
}
输出:
<title>Lorem ipsum dolor</title>
<title>ad minim</title>
<title>ex ea</title>
POST UPDATED(以反映问题中的更改)。
例如,您想要加载一些“a.html”文件:
<html>
<body>
Lorem ipsum dolor
<a title="Ravellavegas.com Analysis" href="http://somewebsite.com/" />
sit amet, consectetur adipisicing elit, sed do eiusmod tempor
<a title="Articlesiteslist.com Analysis" href="http://someanotherwebsite.com/" />
incididunt ut labore et dolore magna aliqua.
</body>
</html>
然后,您必须按如下方式编写脚本:
<?php
$dom = new DOMDocument();
$dom->load('a.html');
foreach ($dom->getElementsByTagName('a') as $tag) {
echo $tag->getAttribute('title').'<br/>';
}
?>
输出:
Ravellavegas.com Analysis
Articlesiteslist.com Analysis
答案 1 :(得分:0)
使用preg_match_all
,它会为您提供一系列匹配项,然后您可以使用每个匹配项。
答案 2 :(得分:0)
如果它是HTML,那么应该只有1个标签......但是,被授予,它可能是带有XSLT的XML。在这种情况下,不是乱用RegExps来尝试解析它,通常最好创建一个DOMDocument对象并使用它:
当然,如果文档不是格式良好的,那么这将会失败。
//taken directly from the comments on PHP documentation at :
// http://uk3.php.net/manual/en/domdocument.load.php
// so that you can load in an XML file over HTTP
$opts = array(
'http' => array(
'user_agent' => 'PHP libxml agent',
)
);
$context = stream_context_create($opts);
libxml_set_streams_context($context);
// request a file through HTTP
$xml = DOMDocument::load('http://www.example.com/file.xml');
// added this bit to get the <title> elements
$aTitles = $xml->getElementsByTagName('title');
// loop and output
foreach($aTitles as $oTitle) {
echo "<p>{$oTitle->nodeValue}</p>\n";
}
答案 3 :(得分:0)
对不起,我犯了大错,我不需要标题标签,这是不同的东西。在网站代码中,html的一部分如下所示:
<td><a title="Ravellavegas.com Analysis" href="http://www.statscrop.com/www/ravellavegas.com">
从中我只需要提取webadress,所以从这里只有ravellavegas.com