【发布时间】:2010-05-14 14:01:09
【问题描述】:
我是 PHP 新手 =) 现在我正在为我的网站模板使用 PHP 包含。我有我的标题,包含我所有的<head></head> 信息。我想要做的是编写一个代码,该代码将从页面中获取<h1></h1> 标记的内容,并将其回显到我的 header.php 包含中的<title></title> 标记中。
我从这里获得了 PHP 简单 HTML DOM 解析器:[http://simplehtmldom.sourceforge.net/][1],我找到了一个代码(我忘记了我在谷歌上搜索的位置),如下所示:
<?php
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$html = file_get_html('http://www.myurl.com/');
foreach($html->find('#content h1') as $element){
echo $element->plaintext;}
?>
我认为应该回显 h1 标签内容?就像我说的,我是 PHP 新手,我只知道基础知识,而且我不知道真正了解任何 OOP(还),所以如果我问了一个愚蠢的问题,我很抱歉。
它看起来是获取当前页面,然后将h1标签的内容放入变量$element,然后回显它。但是当我将它放入我的页面时没有任何反应。谁能帮我解决我做错的事情?谢谢你的阅读!! =)
编辑:这是我的 HTML
来自 header.php 文件:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
/* current page url */
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
?>
<?php include '/home/dreami14/public_html/simplehtmldom/simplehtmldom/simple_html_dom.php' ?>
<title>
<?php
$url = curPageURL();
$html = file_get_html($url);
foreach($html->find('#main h1') as $element){
echo $element->plaintext;}
?></title>
<link rel="stylesheet" type="text/css" href="/stylesheet.css" />
</head>
<body>
来自 test.php:
<?php include '/home/dreami14/public_html/design/includes/head.php' ?>
<div id="main">
<h1>This should be the title</h1>
<p>Blah blah</p>
</div>
</body>
</html>
我没有收到任何错误,但我的 <title></title> 是空的。
编辑添加:另外,我在文档本身中回显了 $url,所以我知道该部分正在工作
【问题讨论】:
-
在我看来就像一个无限循环。为了显示整个页面,您在脚本中调用相同的 URL,然后尝试构建整个页面,该页面再次调用 URL....明白我的意思了吗?
-
感谢 Felix- 所以当我这样做时:[[[ $html = file_get_html($url); ]]],这是调用整个页面的部分吗?您知道还有其他方法可以做到这一点吗?
-
简单的 HTML DOM 解析器 - 好脚本。你的“模式”——坏主意。
标签: php html-parsing