Felix Riesterer: Probleme mit regulären Ausdruck

Beitrag lesen

Lieber Lothar,

if(eregi("$start(.*)$ende", $text, $liste)) { ...

warum eregi und nicht preg_match() oder preg_match_all? Angeblich sind doch die preg_xyz-Funktionen die schnellere (und vielseitigere) Alternative zu ereg_-Funktionen!

Bedeutet der nicht, daß ungeachtet Groß-/Kleinschreibung alle Zeichen vom Startpunkt bis zum Endpunkt aus dem Text gesucht und ins Array übernommen werden sollen?

Also mich beschleicht da ein befremdliches Gefühl wegen dem Dollarzeichen. In Regulären Ausdrücken steht das Dollarzeichen für das Ende des Strings. Wenn Du nun Variablen in das Suchmuster "einbaust", dann weiß ich nicht, ob sich das mit der Syntax für Reguläre Ausdrücke stört.

Was ereichst Du mit folgendem Code?
if(eregi($start.'(.*)'.$ende, $text, $liste)) { ...

Ich hätte das jetzt so gelöst:

/* (?i) bedeutet case-insensitive,  
(?s) bedeutet über Zeilenumbrüche hinweg und  
(?is) ist die Kombination von beidem.  
Das Prozentzeichen ist der Delimiter */  
$suchmuster = '%(?is)'.$start.'(.*)'.$ende.'%';  
if (preg_match_all($suchmuster, $text, $liste)) { ...

Liebe Grüße aus Ellwangen,

Felix Riesterer.