如何通过变量获取定义的值

her*_*ron 6 php mysql mysqli prepared-statement

我的数据库表1行看起来像那样

在此输入图像描述

我正在存储在body中使用的所有变量,在另一列中命名vars.然后获取所有变量.如果它们是多个,则按","符号爆炸.

我想要做的是,从db获取所有使用过的变量,然后通过第二个函数过滤它们filter.如你所见,过滤器有3个输入:$content, $needle, $replacement.

$ content - 消息正文,

$ needle - %.我们正在寻找什么.%

$ replacement - 是我们从数据库获得的var,由php定义.例如,如果我从数据库获得wsurl,它已经在我的settings.php中定义,如DEFINE("wsurl","www.yourdomain.com").

问题是,如何将定义值作为第三个输入发送 - $replacement

public function genMsg($id) {
    $msgid = $id;
    $stmt = $db->prepare('SELECT `body`, `status`, `vars` FROM `messages` WHERE `id`=?') or die(htmlspecialchars($this->db->error));
    $stmt->bind_param("i", $msgid) or die(htmlspecialchars($stmt->error));
    $stmt->execute() or die(htmlspecialchars($stmt->error));
    $stmt->bind_result($message, $status, $vars) or die($stmt->error);
    $stmt->fetch() or die($stmt->error);
    $stmt->close();
    $image = ($status == -1) ? "fail" : "success";
    if (isset($vars) && !empty($vars)) {
        if (strpos($vars, ",")) {
            $vars = explode(",", $vars);
            foreach ($vars as $key => $var) {
                $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>);
            }
        } else {
            $var = trim($vars);
            $this->filter($message, $var, <HERE MUST BE DEFINED VALUE>);
        }
    }
    $data = array(
        'status' => $status,
        'message' => $message
    );
}

protected function filter($content, $needle, $replacement) {
    return str_replace("%'.$needle.'%", $replacement, $content);
}
Run Code Online (Sandbox Code Playgroud)

Ran*_*nnn 14

如果我的问题是正确的.这应该有所帮助.

<?php
    define('TEST', 'abc');
    echo constant('TEST');
Run Code Online (Sandbox Code Playgroud)

http://www.php.net/manual/en/function.constant.php