Regulär Ausdruck

crazy_chicken

Erfahrenes Mitglied
Hallo Zusammen,
ich versuche diese Form der Wörter "<...>" zu entfernen, "..." steht für ein beliebige Zeichenkette.
Wie soll ich es machen, dass (.) für alle Zeichen außer ">" steht?
PHP:
 $regexp = '/(<)((\r\n)*(.)*)*(>)/im';



Danke!
 
Der reguläre Ausdruck ist zwar richtig, aber unnütz: [^>] beinhaltet schon Zeielnumbrüche (\r\n):
Da du keine expliziten Buchstaben angibst, kannst du dir auch den case-insensitive Paramter (i) sparen.
Du musst nicht alle Zeichen einklammern (es sein denn du hast etwas besonderes damit vor).
PHP:
$regexp = '/<[^>]*>/m';
$str = 'Mein <span>Text</span>
$str = preg_replace($str, $regexp); // Mein Text
Diese Funktionen könnten für Dich auch interssant sein:
strip_tags()
htmlspecialchars()
 
Danke,

die Klammer habe ich nur benutzt um es ein bisschen übersichtlicher zu gestalten, ob es gelungen ist ist eine andere frage :D.


Gruß!

So, ich habe eine andere Frage, die zwar damit nichts zu tun hat, aber poste hier:

Ich habe ein kleines Programm geschrieben mit PHP, aber die Laufzeit ist nicht so optimal. Das lädt dann lange.
Gibt es denn da irgendwas, was man machen könnte. Mit ajax nach und nach laden ist mir klar. Aber eine alternative gibt es nicht oder?

Gruß!
 
Ich finde dadurch wird es eher schwieriger zu lesen.
Um die Lesbarkeit von regulären Ausdrücken zu erhöhen, kannst du das x-Flag setzen. Damit werden whitespaces ignoriert. Um whitespaces dann trotzdem zu verwenden, musst du sie mit einem Backslash ( \ ) escapen.
PHP:
$regexp = '/< [^>]* >/mx';

Eine andere Alternative wäre das U-Flag, für ungreedy. Damit wird immer der erste Treffer genommen:
PHP:
$regexp = '/<.*>/mU';

Super Tutorial: Reguläre Ausdrücke | Daniel Fett


edit: Den Code perfomanter gestalten? Das lässt sich so bei bestem Willen nicht sagen und gehört auch in einen neuen Thread.
 
Hallo nochmal,

ich will alle Zeichenketten ersetzem, die zwischen <> beliebige zeichen haben, außer dass es am ende abc hat.
Mein Ansatz:
PHP:
 $regexp = '/<[^>]*[^(abc)]>/im';

also wenn man [^a] hat klappt das->für ein Zeichen, wie negiert man denn das Wort?

Danke schon mal im voraus.
 
Hi,
hatte bis jetzt keine Zeit mir alles durchzulesen, mache ich am WE. :)

Ich versuche wie im Tutorium auf von dir beschriebener Stelle zu lösen:

PHP:
 $regexp = '/<[^>]*(?!abc)>/im';

Irgendwie frisst [^>] alles weg:(

aber macht nicht das, was ich erwarte.
Vielleicht habt Ihr mal Zeit drüber zu gucken.:)

Vielen Dank!
 
Zuletzt bearbeitet:
Zurück