Zitat von
ohcibi
okay soweit so gut... und wenn ich jetz das [a-z0-9] noch mit reinbaue haut das hin meenste? weil es duerfen natuerlich nur buchstaben und zahlen zwischen den hochstrichen vorkommen......
Also ich bin kein Held, soll heißen ich kein Regex-Experte. Soll heißen: ich weiß es nicht. Deshalb würde ich an der Stelle einfach einen zweistufigen Prozess machen, d. h. zuerst alles illegale rausschmeisen und dann nach dem eigentlichen suchen, z.B.:
PHP-Code:
$str = preg_replace("/\\|(?!toplevel)\\|/im","-test-",preg_replace("/(\\|[^a-z0-9]+\\|)/im", ""$str));
Wobei dies das Problem hat, daß so etwas nicht auf folgendes funktioniert:
Code:
dhj45|kjhfjkh4345kj|jflewrh rhthlh54%§§$$|keljhrt4374|kf4
Denn die erste Ersetzung würde daraus folgendes produzieren:
Code:
dhj45|kjhfjkh4345kjkeljhrt4374|kf4
Die zweite Ersetzung würde folgendes machen:Alternativ könnte man die Ersetzung auch folgendermaßen machen (siehe geänderte Klammerung):
PHP-Code:
$str = preg_replace("/\\|(?!toplevel)\\|/im","-test-",preg_replace("/\\(|[^a-z0-9]+)\\|/im", ""$str));
Das würde aus obiger Eingabe folgendes in der ersten Ersetzung produzieren:
Code:
dhj45|kjhfjkh4345kj||keljhrt4374|kf4
Der zweite Schritt führt dann zu:
Code:
dhj45|-test-||-test-|kf4
Pingu
Lesezeichen