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

标签 php function get

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

基本上,我没有为每个页面使用 1 个不同的 php 文件,而是使用了 switch 函数来加载内容,例如:这是其中 1 个页面的示例。

switch($_GET['page'])  {

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

正如您所看到的,它应该显示 div 标记并加载函数,但是并没有加载函数,而是仅显示文本“displayUsers()”。我理解它为什么这样做,但是我不确定如何更改它,以便实际上运行该函数而不是显示它。任何帮助将不胜感激。

问候

最佳答案

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 引擎不会跟踪用户 session 中的功能。

如果您在多个脚本中使用该函数,请将您的函数包含在某个“中心”文件和 include 中无论您需要什么,它都可以使用。我真的建议您更多地阅读 PHP 和 include ;我不会解释 PHP 的基础知识;你还需要做一些功课。

关于单引号内的 PHP 函数显示为文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11437975/

相关文章:

c++ - 使用模板元编程检测函数可以采用的最大参数数量

php - file_exists()在while循环内的php5中不起作用

javascript - object 对象和未定义的 GET 变量

PHP:在继承链的每个对象的上下文中调用方法

php - 调用非对象 MySQLi 上的成员函数 bindParam()

javascript - 在其他列表的基础上填充列表

c++ - 如何从函数返回两个值?

php mysql select,数组结果内部数组结果

php - 使用 PDO 显示数据库中的数据

php - 使用 http_get php