Reguläre Ausdrücke mit strchr bzw. strrchr?
Yadgar
- php
High!
Nachdem ich herausgefunden habe, dass Nachrichtentexte aus dem Web in der Regel in <p>...</p>-Absätzen organisiert sind, habe ich mit strchr alles bis zum ersten <p> weggeschnitten. Jetzt möchte ich mit strrchr alles ab dem ersten Tag, das kein <p> bzw. </p> ist abschneiden... und wundere mich, dass strrchr mit regulären Ausdrücken anscheinend nicht funktioniert!
Der reguläre Ausdruck müsste lauten:
((<)|(</)){1}((..*)|[^p]{1})(>){1}
also alles, was mit < oder <\ beginnt, danach entweder mindestens zwei beliebige Zeichen oder ein Zeichen, das nicht p ist enthält und mit genau einem > endet.
Welche Suchfunktion müsste ich verwenden, wenn strrchr offensichtlich nicht möglich ist?
Bis bald im Khyberspace!
Yadgar
hi,
[...] und wundere mich, dass strrchr mit regulären Ausdrücken anscheinend nicht funktioniert!
Wieso wundert dich das?
strrchr ist eine Stringfunktion.
Welche Suchfunktion müsste ich verwenden, wenn strrchr offensichtlich nicht möglich ist?
Wenn du reguläre Ausdrücke verwenden willst, solltest du die dafür zuständigen Funktionen benutzen.
gruß,
wahsaga
hi,
Wenn du reguläre Ausdrücke verwenden willst, solltest du die dafür zuständigen Funktionen benutzen.
Okay, dann eregi_replace()... eigentlich sollte dann
$reg ="((<)|(</))[^p]{1}.*";
eregi_replace($reg, "", $puffer);
bewirken, dass ab dem ersten öffnenden oder schließenden Tag, das nicht p (bzw. P) enthält (genauer, jedes andere Zeichen außer p (bzw. P) und null bis beliebig viele weitere Zeichen, alles durch einen Leerstring ersetzt wird.
Tut es aber nicht, statt dessen löscht es alles ab dem ersten </p>-Tag... was ja auch kein Wunder ist, da die Bedingung nicht eindeutig ist: der Parser kann nicht zwischen < am Anfang und nachfolgendem / als nichtzugelassenem Zeichen und </ am Anfang unterscheiden.
Aber wenn ich die Bedingung so formuliere, dass dieser Umstand berücksichtigt wird:
$reg ="(<)([^p]&[^/]).*";
werden Nicht-<p>...</p>-Tags überhaupt nicht gefunden!
Was mache ich falsch?
Bis bald im Khyberspace!
Yadgar