ich diese MySQL-Benutzerretrieving twitter wie usename Links php
1 master
2 mastercard
3 mastercom
Im nächsten Zeichenfolge haben, möchte ich sie in sein eigenes Profil der Benutzer (@user)
$string=" Hi, I would like to met up with @master @mastercard @mastercom and @masterhigh ";
wo verknüpfen @ masterhigh gehört nicht zur mysql-Tabelle und muss nicht mit seinem Profil verknüpft sein.
Ich habe diesen Code
preg_match_all('/@(\w+)/',$string,$matches);
foreach ($matches[1] as $match) {
//
$user=mysql_query("SELECT id_user FROM $table_users WHERE username='$match' LIMIT 1");
$user_n=mysql_fetch_array($user);
//num
$user_num=mysql_num_rows($user);
$id_user=$user_n['id_user'];
if($user_num>0){
//user exists (link to profile)
$imatch="<a href='?s=$id_$user'>@".$match."</a>";
}else{
//user NOT exists (NOT link to profile)
$imatch ="@$match";
}
$string=str_replace("@".$match,$imatch,$string);
}
echo $string;
Während die Benutzer differents sind, alles ist in Ordnung, aber wenn sie mit den gleichen Buchstaben beginnt, verbindet der Code nur die wiederholten Buchstaben (@master) und nicht auf @ umleiten Mastercard-Profil oder @ Mastercom-Profil. Ich denke, str_replace() funktioniert nicht wie erwartet. Was mache ich falsch? 5 Sterne.
Ist diese Regex '(? = \ S | $ |, | \.) /' Ersetzen Sie ein Trennzeichen? oder nur Punkt, Dollar und Komma? – masterhoo
nur Punkt und Komma, Dollarzeichen ist "Ende der Zeichenfolge" in Regexp. Du kannst beliebig viele hinzufügen, indem du oder den Operator '|' verwendest, wenn es ein Sonderzeichen in regexp ist, setze es mit '\' (wie Punkt in meinem Beispiel) fort. –
Ich glaube du kannst '\ @ (\ w +) (? ! \ w) \ 'pattern wenn du nicht alle möglichen Trennzeichen auflisten willst –