我是PHP的新手=)现在我正在使用PHP包含我的网站模板。我有我的标题,包含我的所有<head></head>
信息。我想要做的是编写一个代码,该代码将从页面中获取<h1></h1>
标记的内容,并将其回显到我的header.php include中的<title></title>
标记。
我从这里得到了PHP Simple HTML DOM Parser:[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,因此我知道该部分正在运行
答案 0 :(得分:3)
您没有说明HTML的结构,但如果您想找到ID为h1
的{{1}},则需要使用
content
您现在正在采取的方式,它会在中找到ID为foreach($html->find('h1#content') as $element){
的另一个元素中的任何h1
元素。
答案 1 :(得分:0)
我会重新调整你的代码。基本上,您在填充之前尝试在h1
中获取内容。在test.php
中,我将使用元数据定义一个数组,然后包含标题
像这样:
test.php
<?php
$meta = array();
$meta['title'] = "This should be the title";
include '/home/dreami14/public_html/design/includes/head.php'
?>
<div id="main">
<h1><?php echo $meta['title'] ?></h1>
<p>Blah blah</p>
</div>
</body>
</html>
head.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" />
<title>
<?php echo (isset($meta) && isset($meta['title'])) ? $meta['title'] : "Default title"; ?>
</title>
<link rel="stylesheet" type="text/css" href="/stylesheet.css" />
</head>
<body>
但是如果你开始做更复杂的事情,你应该看看Model-View-Controller设计模式,例如实现它的Zend framework。
答案 2 :(得分:0)
我认为这是方式,只打印儿童内容:
html = file_get_html($url);
foreach($ret->children as $child) {
echo $child;
}