str_replace foreach 循环内部不替换

str_replace inside foreach loop not replacing

我的代码:

$string = "@admin BLA BLA @mark BLA BLA BLA @koko BLA BLA";    
preg_match_all("/(@\w+)/", $string, $matches);

foreach ($matches[0] as $usernames) {
    $user = (" SELECT * FROM user WHERE username = '" . $usernames . "' ");
    while ($row = mysql_fetch_array($user)) {
        $string = str_replace($usernames, $row["userid"], $string);
    }
}
echo $string;

我试图将 @ 之后的所有 usernames 替换为其关联的用户 ID,但是当我打印文本时,输出与原始文本相同。

输出: @admin BLA BLA @mark BLA BLA BLA @koko BLA BLA

您的 SQL 查询将类似于 SELECT * FROM user WHERE username = '@admin' - 这可能不是您的期望。

试试这个修复:

$user = (" SELECT * FROM user WHERE username = '" . substr($usernames, 1) . "' ");

希望对您有所帮助:)