我的代码:str_replace函数foreach循环内不更换
$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;
我想与他们相关联的用户ID,以取代@
毕竟usernames
,但是当我打印的文本,输出是一样的原文。
输出: @admin BLA BLA @mark BLA BLA BLA @koko BLA BLA
我怀疑你的数据库中包含的用户名与'@'前缀。你需要剥去它才能获得效果。 –
此外,考虑使用['preg_replace_callback'](http://php.net/preg-replace-callback)在匹配上运行算法(在这种情况下,获取用户标识)。 –
是不是要替换所有内容并将它们保存在$ string内?我的意思是在写作 – M98