MEIN CODE:str_replace innerhalb foreach-Schleife ersetzt nicht
$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;
ich alle usernames
nach @
mit ihren zugeordneten Benutzer-ID zu ersetzen versuche, aber wenn ich den Text zu drucken, ist der Ausgang gleich dem Originaltext.
Ausgabe: @admin BLA BLA @mark BLA BLA BLA @koko BLA BLA
ich Ihre Datenbank Benutzernamen mit '@' Präfix enthält zweifeln. Sie müssen das entfernen, um einen Effekt zu erhalten. –
Verwenden Sie auch ['preg_replace_callback'] (http://php.net/preg-replace-callback), um einen Algorithmus (in diesem Fall die Benutzer-ID) für Übereinstimmungen auszuführen. –
Ersetzen Sie nicht alle Inhalte und speichern sie in $ string? Ich meine über das Schreiben – M98