使用PHP中的URL获取元素的特定内容块
可能重复:
如何使用PHP解析和处理HTML?
我知道file_get_contents(url)方法,但我想要的是,可能首先使用file_get_contents(url)来拉取页面的内容,然后是否有方法/函数可以从内容中提取或获取某些内容块使用file_get_contents(url)? 这里有一个例子:
所以代码将如下所示:
$pageContent = file_get_contents('http://www.pullcontentshere.com/');
这将是$pageContent
的输出
<html> <body>
<div id="myContent">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body> </html>
也许你有什么建议或想到如何具体提取<div id="myContent">
和它的整个孩子?
所以它会是这样的:
$content = function_here($pageContent);
所以输出将如下所示:
<div id="myContent">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
非常感谢答案!
另一种方法是使用正则表达式。
<?php
$string = '<html> <body>
<div id="myContent">
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body> </html>';
if ( preg_match ( '/<div id="myContent"(.*?)</div>/s', $string, $matches ) )
{
foreach ( $matches as $key => $match )
{
echo $key . ' => ' . htmlentities ( $match ) . '<br /><br />';
}
}
else
{
echo 'No match';
}
?>
现场示例:http://codepad.viper-7.com/WSoWCh
您可以使用内置的SimpleXMLElement,如在nullpointr的答案中所述,或者也可以使用正则表达式。 另一个解决方案,我通常会发现非常简单的是PHP Simple HTML DOM Parser。 你可以在这个库中使用jQuery风格的选择器。 您的代码的一个简单示例如下所示:
// Create DOM from url
$html = file_get_html('http://www.pullcontentshere.com');
// Use a selector to reach the content you want
$myContent = $html->find('div.myContent')->plaintext;
您需要使用XML解析来解决您的问题。 我会向您推荐SimpleXML,它已经是PHP的一部分。 这是一个例子:
$sitecontent = "
<html>
<body>
<div>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</body>
</html>";
$xml = new SimpleXMLElement($sitecontent);
$xpath = $xml->xpath('//div');
print_r($xpath);
链接地址: http://www.djcxy.com/p/29909.html
上一篇: Get a specific content block of element using URL in PHP