php中的动态标题

ell*_*eek 1 php variables function title

我试图让页面标题(<title>bla..bla..bla..</title>)在php中具有多文件布局,如下所示:Functions.php包含在index.php中,然后从functions.php调用get_header()以包含页眉. php标题标签位于头文件中.我希望能够从index.php设置标题我该怎么做?

例如,这是我尝试过的:
Index.php:

<? require_once('includes/functions.php'); global $t; $t = '/home/s0urc3'; get_header();?>

<div id="main">

    <h2><a href="NEEDED" rel="bookmark" title="Permanent Link to NEEDED">NEEDED</a></h2>


    <p class="postmeta"><a href="<?php page_url(yes)?>" class="readmore">Permalink</a> | <span class="date">Revision Date</span></p>

        <p>CONTENT AND CRAP</p>

    <!-- main ends -->  
</div>
<?php /*test*/echo($title);/*test*/ get_footer();?>
Run Code Online (Sandbox Code Playgroud)

header.php文件:

<?php //include('functions.php')?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<? title('$t')?>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
<?php get_theme_css()?>
</head>

<body>
<!-- wrap starts here -->
<div id="wrap">

    <!--header -->
    <div id="header">               
        <h1 id="logo-text"><a href="<?php echo (HOME)?>"><img src="<?php get_url('images/Logo.png')?>" alt="S0URC3"><!-- S0URC3 --></a></h1></div>  

<p id="intro">
        Just another poorly coded website!
        </p>
        </div>
        <div id="nav">
            <!-- <div id="navi"><div id="menu" class="fixed"> -->
            <ul class="">
            <li class=""><a href="http://s0urc3.ismywebsite.com">Home</a></li>
            <li class=""><a href="http://blog.s0urc3.ismywebsite.com">Blog</a></li>
            <li class=""><a href="http://forums.s0urc3.ismywebsite.com">Forums</a></li>
            <li class=""> <a href="mailto:ellisgeek@gmail.com?subject=Comments">Comments</a></li>
            <!--<li class="">Clans</li>-->
            <li class=""><a href="http://astro.s0urc3.ismywebsite.com">-astro-</a></li>
            <!--<li class=""><a href="#">Inspiration</a></li>
            <li class=""><a href="#">Resources</a></li>         
            <li class=""><a href="#">Tutorials</a></li>         
            <li class=""><a href="#">WordPress</a></li>-->          
        </ul><!-- </div></div> -->

        </div>                  
    <!--header ends-->                  
    </div>

    <!-- content-wrap starts -->
    <div id="content-wrap">
Run Code Online (Sandbox Code Playgroud)

的functions.php:

<?php
require_once('constants.php');
  //===============//
 //Start Functions//
//===============//

//Gets a file from the domain http://files01.s0urc3.ismywebsite.com/
function get_url($file)
{
echo (FILE_ROOT . $file);
}

//gets the url of the theme
function get_theme_css() {echo('<link rel="stylesheet" href="' . FILE_ROOT . 'colourise/style.css" type="text/css" />');}

function get_header() {require_once('includes/header.php');}

function get_footer() {require_once('includes/footer.php');}

//Gets the URL of the current page
function page_url($p)
{
    $s = empty($_SERVER["HTTPS"]) ? ''
        : ($_SERVER["HTTPS"] == "on") ? "s"
        : "";
    $protocol = strleft(strtolower($_SERVER["SERVER_PROTOCOL"]), "/").$s;
    $port = ($_SERVER["SERVER_PORT"] == "80") ? ""
        : (":".$_SERVER["SERVER_PORT"]);
        if ($p == 'yes')
  echo ($protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI']);
else
    return $protocol."://".$_SERVER['SERVER_NAME'].$port.$_SERVER['REQUEST_URI'];
}
function strleft($s1, $s2)
{
    return substr($s1, 0, strpos($s1, $s2));
}

//gets the year
function cur_year() {echo (YEAR);}

function ads($code) {echo('<script type="text/javascript" src="http://links.ismywebsite.com?i='. $code .'"></script>');}

function title($title)
{echo('<title>Index Of: '.$title.'</title>');}
  //=============//
 //End Functions//
//=============//
?>
Run Code Online (Sandbox Code Playgroud)

PS当我在index.php中调用functions.php时,一旦所有函数在页眉和页脚中都可用,我才会包含函数

Der*_*sed 8

首先,文件header.php包含在函数中,因此它无权访问全局变量$t.您需要执行以下操作之一:

functions.php:

function get_header() {
    global $t;
    require_once('includes/header.php');
}
Run Code Online (Sandbox Code Playgroud)

或者,在header.php:

<?php //include('functions.php')
global $t;
?>
<!DOCTYPE html>
<!-- etc -->
Run Code Online (Sandbox Code Playgroud)

这样,您声明的变量将可用于函数的局部变量范围.

其次,您需要使用双引号或根本没有引号来调用该函数.单引号不会解析变量.

  • title($t);
  • title("$t");
  • title("{$t}");

错误

  • title('$t');

以下是String数据类型的PHP手册页 - 请务必查看单引号字符串与双引号字符串.

Nitpicky的事情:

  • 你应该总是使用完整的开始标签(<?php),而不是短开标签(<?)
  • 你的函数title()应该总是返回一个值,你可以回应它,而不是直接从函数内部回显.
  • strleft()您实现的功能虽然很聪明,但已经存在.请参阅:实际上,此功能与您想要的相反; 我错误地记得它做了什么.继续. 再次编辑:不,显然我是对的,你将可选的第三个参数传递为true.您通常应该使用已经存在的函数,因为除了某些例外情况,它们会更快. strstr()
    • 这个规则的一个值得注意的例外是 array_rand()

  • @Jason:两个原因.首先,因为`<?`是一种通用语法,也用于其他语言,例如XML; 在这种情况下,短打开标记是不明确的,可能导致涉及PHP尝试(和失败)解析XML的错误.第二,因为它必须在php.ini中启用,你不能总是保证它会,但你也不能总是确定你可以这样做; 短开标签打破便携性. (2认同)