单引号显示内的PHP函数为文本

时间:2012-07-11 17:19:07

标签: php function get

我有一个显示用户列表的函数displayUsers()

基本上我没有为每个页面提供1个不同的php文件,而是使用了切换功能来加载内容。这是其中一个页面的示例。

switch($_GET['page'])  {

   case '#userlist' : $page = '
       <div class="innerbox">
            displayUsers();
       </div> '; break;
}

正如您所看到的,它应该显示div标记并加载函数,但是不是加载函数,而只是显示文本“displayUsers()”。我明白为什么它这样做但是我不知道如何改变它所以它实际上是运行函数而不是显示它。任何帮助将不胜感激。

此致

4 个答案:

答案 0 :(得分:4)

displayUsers()在引号内。它被解释为一个字符串。你想要

switch($_GET['page'])  {

   case '#userlist': $page = '<div class="innerbox">' . displayUsers() . '</div>'; break;

}

这将连接字符串中displayUsers()的返回值,假设displayUsers()返回代码。 我认为你混淆了this feature,其中解析了双引号字符串中的变量。这不适用于功能。

您也可以使用case '#userlist': $page = sprintf('<div class="innerbox">%s</div>', displayUsers(); break;

在此处阅读sprintf:http://php.net/manual/en/function.sprintf.php


如果displayUsers()实际上输出了代码本身,那么您可以使用

switch($_GET['page'])  {

   case '#userlist': echo '<div class="innerbox">'; displayUsers(); echo '</div>'; break;

}

打印开始标签会发生什么,然后调用该功能(打印代码),然后按顺序打印结束标签。


如果你得到function not defined()那么它就是它听起来的样子。该函数尚未在当前脚本中定义。

PHP如何运作 每次请求页面时(有人转到“foo.php”),您的服务器和PHP引擎从某个目录获取文件(foo.php),解析它,并且(通常)在表单中向用户发送一些内容一个HTML文档。每个页面都像一个“脚本”,有点像一个迷你应用程序,编译,执行一次,忘记

让我们在您的主页上说明displayUsers()已定义。

//index.php

function displayUsers() {
    //some code...
}

echo "Welcome to my website!", "<br />", 'Click <a href="foo.php">Here</a>.';

当有人访问您的主页时,displayUsers()已定义,是的!然而,之后它被遗忘了 - PHP引擎在加载完成后丢弃了脚本,当你到达displayUsers()时肯定不知道foo.php是什么。


那你能做什么? 如果您只在一个页面上使用该功能,请在该页面上声明它。请记住,每个文件都被视为脚本。 PHP引擎不会跟踪用户会话的功能。

如果您在多个脚本中使用该功能,请将您的功能包含在某个“中央”文件中,并将include包含在您需要的任何位置。我真的建议你多阅读PHP和include;我不打算解释PHP的基础知识;你需要做更多的功课。

答案 1 :(得分:1)

你需要使用。 (dot)在使用singleqotes时追加字符串:

$page = '<div class="innerbox">'.displayUsers().'</div>';

答案 2 :(得分:0)

试试这个

case '#userlist' : $page = '
           <div class="innerbox">'
                .displayUsers().
           '</div> '; break;

答案 3 :(得分:0)

以这种方式使用串联.运算符:

switch($_GET['page'])  {

   case '#userlist':
       $page = '
       <div class="innerbox">'
       . displayUsers() .
       '</div> ';
       break;
}