Hilfe bei preg_replace und match

maarian

Erfahrenes Mitglied
Hallo,

Ich habe mal eine Frage und zwar ich habe ein Textfeld in dem ein User wie bei Twitter updates reinschreiben kann.

Ich möchte den Text filtern und darin einen Link setzen sobald der User @MaxMustermann macht, das funktioniert soweit auch

PHP:
$text = preg_replace('%@([a-zA-Z0-9]*)%', '<a href="/'.$language.'/People/\1/updates" style="font-weight:600; font-size:12px; color:red;">\0</a>', $_POST['message']);


Dadurch entsteht dann der link: /de-de/People/MaxMustermann/updates
Jetzt möchte ich aber den namen aufteilen zb

PHP:
$vorname= "Max" $nachname="Mustermann"

und dann den Link /de-de/People/Max_Mustermann/updates setzen und das vorher noch mit einem Query verbinden

Wie funktioniert das denn habe echt schon viel rumprobiert aber ich komme echt nicht weiter.

Wäre schön wenn mir jemand helfen würde
 
Nutze demnächst einen aussagefähigen Titel, denn wenn mal wieder jemand solch ein Problem hat findet er es nicht, weil er nicht nach "Hilfe bei regexp" suchen wird.

Du siehst in deinem Pattern die Unterscheidung zwischen Groß-/Kleinschreibung, diese lässt sich Nutzen:
([A-Z][a-z0-9]*) oder ([A-Z]*[a-z0-9]*)

So für Vor- und Nachname. Das setzt allerdings voraus, dass der Benutzer immer auf die Groß-/Kleinschreibung achtet, weswegen dieses Vorgehen häufig scheitern wird. Schöner wäre eventuell ein Prepared Statement für die Datenbank, dass den Benutzernamen Case-Sensitive ausliest und so einen ordentlichen Link erzeugen kann.
 
Hallo danke erstmal allerdings hilft es mir nicht wirklich weiter.

Ich könnte jedem user in der datenbank auch ein nicknamen geben der dann dafür zuständig ist zb bei Max Mustermann heisst der nick: maxmustermann aber trotzdem muss ich jetzt den namen von der hinter nem @ bis zum nächsten leerzeichen steht in eine Variable bekommen wie mache ich das?
 
Okay ich habe es jetzt so gemacht:

PHP:
$text = preg_match('%@([a-zA-Z0-9]*)%', $_POST['text'], $user);  

$usernickname = $user['1'];

Dankeschön trotzdem
 
den namen von der hinter nem @ bis zum nächsten leerzeichen steht in eine Variable bekommen wie mache ich das?

PHP:
$text = preg_replace('%@([a-zA-Z0-9]*)%', '<a href="/'.$language.'/People/\1/updates" style="font-weight:600; font-size:12px; color:red;">\0</a>', $_POST['message']);

Ähnlich, nur ist hier [phpf]preg_match[/phpf] angebracht.

Jetzt möchte ich aber den namen aufteilen zb
PHP:
$vorname= "Max" $nachname="Mustermann"
und dann den Link /de-de/People/Max_Mustermann/updates setzen und das vorher noch mit einem Query verbinden

([A-Z][a-z0-9]*) oder ([A-Z]*[a-z0-9]*)

So für Vor- und Nachname.

Ändere dein Pattern. Mache meines einmal für Vorname und einmal für Nachname, dann sind die Ergebnisse in \1 und \2 (vergleiche mit deinem preg_replace).
 
Zurück