1

我想要以下内容:我有一个字符串,我想从数据库中搜索该字符串中的用户名,例如:

"Dear user, xy xy xy, Kind Regards, me"

而且,我想从数据库中找到字符串中的所有用户名并将其替换为链接,例如(函数的输出):

"Dear <a href="link.php?user=user">user</a>, xy xy xy, Kind Regards, <a href="link.php?user=me">me</a>"

要检查所有用户名,我会使用 RedBeanPHP:

$alluser = R::getAll('SELECT * FROM user')

我刚刚为它创建了一个代码:

function mention($string) {
    $alluser = R::getAll('SELECT * FROM user');
    foreach ($alluser as $user) {
        //The Regular Expression filter
        $reg_exUrl = "/".$user['username']."/";
        if (preg_match_all($reg_exUrl, $string, $usernames)) {
            foreach ($usernames as $username) {
                $search = $username;
                $replace = '<a href="user.php?tmpid='.$user['tmpid'].'">' . $user['username'] . '</a>';
                $string = str_replace($search, $replace, $string);
                if (strlen($allmention) > 0) {
                    $spacecomma = ", ";
                } else $spacecomma = "";
                $allmention .= $spacecomma . $user['tmpid'];
            }
        }
    }

    return $string;

}

抛出以下错误:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function mention(), 0 passed in xyz.php on line 65 and exactly 1 expected in xyz.php:34 Stack trace: #0 xyz.php(65): mention() #1 {main} thrown in xyz.php on line 34
4

2 回答 2

0

如果您从数据库中获取数组,则可以使用foreach检索每个用户名以生成您的消息。

于 2020-02-22T15:56:48.540 回答
0

您的错误与您发布的代码无关。错误出现在调用该mention函数的代码中。它应该被称为

$result_string = mention($initial_string)

但判断它被称为错误

$result_string = mention()
于 2020-02-22T16:52:33.827 回答