我的代碼: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