【问题标题】:Replace PHP:FunctionName with the PHP function return将 PHP:FunctionName 替换为 PHP 函数返回
【发布时间】:2013-10-07 02:09:56
【问题描述】:

所以我得到的是一个存储在数据库中的页面,其中包含一些内容,然后是 PHP 函数 load_users,然后是更多内容。我需要做的是在从数据库中检索到的字符串中搜索 PHP:FunctionName(Different on everypage),然后用返回的函数替换它。

假设在我拥有的数据库中

    <h1>Online Users</h1>
    PHP:LoadOnline
    <p>Blah blah blah blah blah</p>

我希望能够搜索那个 PHP: 并获取它旁边的函数名,然后执行它并显示结果。这是可能的还是我必须想出别的办法?

【问题讨论】:

  • 我有这个:echo str_replace('PHP:load_users',load_users(),$pageString);但这需要我输入要查找的函数,并且由于某种原因它在其他内容之上运行该函数

标签: php string function replace


【解决方案1】:

你可以使用preg_replace_callback

function printSomeText()
    {
    echo 'text';
    }

$template = "
 <h1>Online Users</h1>
    PHP:printSomeText sdf
    <p>Blah blah blah blah blah</p>";

echo preg_replace_callback(
    '/PHP\:([^\s]*)/', function ($matches)
        {
        $function = $matches[1];
        ob_start();
        $function();
        $return = ob_get_contents();
        ob_end_clean();
        return $return;
        }, $template
);

这种方式已经够“懒惰”了。

【讨论】:

  • 问题是我必须准确指定我正在寻找的函数,这使得事情变得困难,因为我希望编辑页面的人能够输入 PHP:WhateverFunction 并且它可以工作加上仍然没有解释为什么函数返回显示在任何其他内容之前,即使它位于内容的中间
  • 请指定您的函数作为示例。
  • 弄清楚为什么它显示不正确,这样就解决了。基本上可以说一个函数返回 hi 另一个返回 hello 我希望客户端能够键入 PHP:hi 并运行返回 hi 的函数但是如果他们键入 PHP:hello 它运行返回 hello 的函数
猜你喜欢
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2014-10-04
  • 1970-01-01
相关资源
最近更新 更多