Problem mit regulärem Ausdruck

  • Themenstarter Themenstarter BKBB
  • Beginndatum Beginndatum
B

BKBB

Hallo,
ich möchte folgendes aus meinem String löschen:

HTML:
<a></a>
oder / und
<a *irgendeintext*></a>
und das selbe auch mit dem p Tag.

folgenden regulären Ausdruck habe ich gebaut:
PHP:
/\<(p|a)(.*?)\>\<\/(p|a)\>/im

Das klappt auch soweit, als dass zw. einem öffnenden und schließenden a oder p Tag kein anderer Tag ist, ohne dass auf diesen Text folgt:
HTML:
Das wird gelöscht: <a><tag>text</tag></a> 
und das nicht: <a><tag>text</tag>text</a>

Wo ist der Fehler in dem reg. Ausdruck?

Vielen Dank,
für Eure Hilfe,
Markus
 
Versuche es einmal hiermit:

PHP:
<?php 

    $string = '<a><tag>text</tag>text</a> ';
    $neu =  preg_replace('/<(p|a)(.*?)>[^.*]<\/(p|a)>/im','',$string);
	
    print_r($neu);

?>
 
Zuletzt bearbeitet:
Vielen Dank, aber wie sieht es mit sonderzeichen aus? Ist doch etwas dumm, alle möglichen Zeichen anzugeben?
Danke,
Markus
 
Hallo,
danke für die Antworten. Leider hat es aber so auch nicht geklappt. Mit
PHP:
<(.*)(?:\s[^>]*)?>(\s)*?<\/\\1>/im
bin ich jetzt zufrieden. Nur bei verschachtelten Tags bekomme ich Probleme:
HTML:
<a><tag></tag></a>
Dafür muss ich die funktion halt zweimal ausführen...
Viele Grüße,
Markus
 
Zurück