2016-05-22 12 views
1

Ich habe diese Funktion, die Farbe jeder @username in einem String enthaltenAbrufen aller Benutzernamen von einem Tweet in einer PHP-Funktion

//color @username 
function hashtag_links($string,$id_session) { 
preg_match_all('/@(\w+)/',$string,$matches); 
foreach ($matches[1] as $match) { 
$string = str_replace("@$match", "<span class=color>@$match</span>", "$string"); 
} 
return $string; 
} 

Alles ist gut, während die Benutzernamen unterschiedlich sind (@ cat, @ Bleistift, @ scubadiving), aber wenn der Benutzername mit den gleichen Buchstaben beginnt (@ cat, @ caterpiller, @ cattering), färbt die Funktion nur die wiederholten Buchstaben in diesem Fall (@cat), was zu tun ist?

Antwort

2

Verwenden preg_replace statt:

//color @username 
function hashtag_links($string,$id_session) { 
    return preg_replace('/@(\w+)/', '<span class=color>@$1</span>', $string); 
} 
+0

Sie sind ein Genie. – masterhoo

0

Hmmm ... vorausgesetzt, Sie eine Zeichenfolge wie folgt aus:

$string='Hey there, folks! @bob, @kevin, @bobby, @keverino'; 

Ich würde versuchen, so etwas wie:

preg_replace('/(@[A-Za-z0-9]+)/','<span style="color:pink;">\1</span>',$string); 

Natürlich Ich weiß nicht, was Ihre Benutzernamen enthalten können, daher müssen Sie möglicherweise die Regex anpassen.

Verwandte Themen