PHP ersetzt @username durch einen Link zum Twitter-Account

7

Ich nehme an, dass das etwas mit Regex zu tun hat, aber es ist eine Kunst, die nur ihr eigenes ist - und ich brauche Hilfe.

Wenn wir eine Geschichte anzeigen, speichern wir den gesamten Text in einer Variablen - sagen wir $ Story.

Was ich möchte, ist ein str_replace (ich denke, das ist was ich brauche), das so etwas sagt. "Wenn der Text @etwas enthält, dann verwandle ihn in einen Link wie <a href="http://www.twitter.com/something">@something</a> - aber tu das nur, wenn es da ist nichts vor dem @ -Symbol "(um E-Mail-Adressen auszuschließen)

Außerdem müssten wir das "Etwas" stoppen, wenn hinter dem Zeichen ein Leerzeichen oder eine Interpunktion steht. damit @etwas. wandelt sich nicht in <a href="http://www.twitter.com/something.">@something.</a>

um

Irgendwelche Vorschläge, wie dies funktioniert?

    
Andelas 22.01.2011, 04:23
quelle

2 Antworten

13
%Vor%

Sehen Sie

Es entspricht einem @ , dem Leerzeichen oder nichts vorangestellt ist (wenn es am Anfang steht).

Es kann auch mit positivem Lookbehind kurzgeschlossen werden:

%Vor%

Dies entspricht nur dem Twitter-Namen, aber nur, wenn davor oder davor noch Platz ist.

    
codaddict 22.01.2011, 04:44
quelle
6

Ein positiver Lookbehind könnte den Trick bewirken:

%Vor%

geht mir aus dem Kopf. "Wenn es ein @ gibt, dem ein whitespace vorangestellt ist, dann nimm das, was nach dem @ folgt und mache das html-Tag-Wrapping".

    
Marc B 22.01.2011 04:30
quelle

Tags und Links