php获取网页标题和内容函数(不包含html标签)


在PHP中,你可以使用`file_get_contents`函数来获取网页的HTML内容,然后使用`DOMDocument`类来解析HTML,并提取标题(``标签)和内容(去除HTML标签后的文本)。这里提供一个示例函数,它演示了如何做到这一点:</p><p></p><pre class="line-numbers language-php"><code> <?php function getWebPageTitleAndContent($url) { // 检查URL是否为空 if (empty($url)) { return ['title' => '', 'content' => '']; } // 获取网页内容 $html = file_get_contents($url); if ($html === false) { // 如果无法获取内容,返回空值 return ['title' => '', 'content' => '']; } // 加载HTML内容到DOMDocument $dom = new DOMDocument(); @$dom->loadHTML($html); // 使用@来抑制可能的警告(如HTML格式不正确) // 提取标题 $title = $dom->getElementsByTagName('title')->item(0)->nodeValue; // 提取内容并去除HTML标签 $xpath = new DOMXPath($dom); $bodyNodes = $xpath->query('//body/*'); $content = ''; foreach ($bodyNodes as $node) { // 这里我们简单地假设内容节点不包含需要特别处理的子元素(如script, style等) // 对于更复杂的情况,你可能需要更复杂的逻辑来过滤这些节点 $content .= strip_tags($dom->saveHTML($node)); } // 去除可能的多余空白字符 $content = trim(preg_replace('/\s+/', ' ', $content)); return ['title' => $title, 'content' => $content]; } // 使用示例 $url = 'http://example.com'; // 请替换为实际的URL $result = getWebPageTitleAndContent($url); print_r($result); ?> </code></pre> <p><script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8670312724662002" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-8670312724662002" data-ad-slot="2901279597"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script></p> <p></p><p>**注意**:</p><p>1. 这个函数假设网页的内容是有效的HTML,并且`<title>`标签和`<body>`标签都存在。</p><p>2. 使用`@$dom->loadHTML($html);`来抑制可能的警告,但在生产环境中,最好处理这些潜在的错误或警告。</p><p>3. `strip_tags`函数用于去除HTML标签,但请注意,它不会处理嵌套的JavaScript或CSS等可能包含在`<script>`或`<style>`标签中的情况。对于复杂的HTML内容,你可能需要更复杂的解析器或清理逻辑。</p><p>4. 这个函数仅提取了`<body>`标签下的直接子元素的内容,并去除了这些子元素的HTML标签。如果你需要提取整个`<body>`的内容(包括嵌套的内容),你可以调整XPath查询或使用不同的方法来获取和清理内容。</p> </div> </div> </div> </div> <div class="row"> <div class="card card-body"> <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8670312724662002" crossorigin="anonymous"></script> <ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-8670312724662002" data-ad-slot="5669508194"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> <hr> <footer class="card" style="position:relative;bottom:0;width:100%;"> <div style="background-color: #e9ecef;padding-top: 20px;"> <div class="container"> <div class="copyright">Copyright © 2024 www.d2tu.com <a rel="nofollow" href="https://beian.miit.gov.cn/" target="_blank">皖ICP备2023005503号-1</a> <a href="https://www.d2tu.com/sitemap.xml" target="_blank">XML地图</a> </div> <p>QQ邮箱: <b>664032890</b></p> </div> </div> </footer> <script src="/static/js/jquery.min.js"></script> <script src="/static/js/bootstrap.min.js"></script> <script src="/ziyuan/js/prism.js"></script> </body> </html>