Regex Problem in PHP

marweng

Grünschnabel
Hallo zusammen,

ich bin grad dabei einen HTML-Code per reguläre Ausdrücke auszuwerten. Dies funktionert aber noch nicht ganz. Vielleicht kann mir ja jmd. weiterhelfen...

Problemstellung:

ich will den Inhalt zwischen den Tags

HTML:
<form name="tabelle" action="" method="post" >

</form>

ausgeben. Dazu hab ich mir folgenden Code mit regulären Ausdruck gebaut:

PHP:
$suchmuster = '(<form[^>]*\s*name="tabelle"[^>]*>)(.*)(</form>)';

if (ereg ($suchmuster, $text, $regs)) {
    echo "$regs[3].$regs[2].$regs[1]";
} else {
    echo "Fehler, nichts gefunden! ";
}

Der reguläre Ausdruck scheint zwar zu funktionieren, weil die Ausgabe ab dem Start-tag anfängt, jedoch überliest er nächste Endtag </form> und gibt den kompletten Rest der Textdatei aus...

Wie kann ich dies denn auf das nächste auftretende Endtag begrenzen!?

Besten Dank schon mal im Voraus!

Markus
 
Das liegt daran, dass du in der Gruppe 2 alles zulässt, also auch </form>

Probier mal das

PHP:
'(<form[^>]*\s*name="tabelle"[^>]*>)(^(</form>)*)(</form>)'
 
PHP:
$suchmuster = '/(?:<form[^>].*?name\=\"tabelle\"[^>].*?\>)(?:(.*?))(\<\/form\>)/is';
$text = '<form name="tabelle" action="" method="post" >

</form>';

preg_match_all($suchmuster, $text, $reg);

print_r($reg);
 
Danke für Eure schnellen Antworten.

Funktioniert aber leider immer noch nicht.

@shutdown: Bei deiner Variante findet der interpreter gar nichts....

@kd3: bei deiner variante bekomm ich ne fehlermeldung á la

Warning: ereg() [function.ereg]: REG_BADRPT in /mnt/web3/13/55/5133055/htdocs//test_2.php on line 66
Fehler beim Erstellen der Tabelle!
 
dann vielleicht so? (kann das hier leider nicht testen)

Code:
'(<form[^>]*\s*name="tabelle"[^>]*>)([.^(</form>)]*)(</form>)'
 
Hi shutdown,

Ne, auch bei diesem Suchmuster funktioniert es nicht.

Momentan klappts immer noch bei meiner ersten Variante am besten. Nur, dass eben das nächstfolgende </form>-Tag überlesen wird...

Was ich bei Deinem Ansatz nicht vesteh, ist wieso bei dir im Ausdruck 2 x das schließende </form>-Tag vorkommt?

Grüße
Markus
 
ok, kein Problem..

Danke Dir trotzdem mal - werd mal selber weiter probieren - vielleicht fällt mir ja noch was ein...

Bis dann.
 
Ich habe im Augenblick leider nicht viel Zeit und kann deshalb mir zu deinem Problem keine Gedanken machen. :(
Tipp: Als ich irgendwann mal das hier durchgearbeitet hatte, hatte ich nie wieder ein Problem mit REGEX. ;)

mfg,
swffilms
 
Zurück