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) . "' ");
希望对您有所帮助:)
我的代码:
$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) . "' ");
希望对您有所帮助:)