Lothar: Probleme mit regulären Ausdruck

Hi,

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

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

Grüße, Lothar

  1. Hi,

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

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

    Ich meine mit Array natürlich, daß ich dann den gefundenen Teiltext in $liste[1] wiederfinden würde, bzw. eine komplette Kopie in $liste[0].

    Nochmal Grüße ;-)

    1. Hallo,

      meine Vermutung ist, daß Du Zeilenumbrüche in Deinem Text nicht berücksichtigst.
      Schau Dir dazu mal die Anmerkung zum Modifizierer "s" unter http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php an.

      $text = "fooHier kommt Test. Auch mit
      Zeilenumbrüchen.bar";

      $start = 'foo';
      $ende = 'bar';

      preg_match("/$start(.*)$ende/s", $text, $liste);
      while(list($key,$val) = each($liste)) { echo $key.' = '.$val.'<br />'; }

      Ciao,
      Andreas

      --
      "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
      1. Hi,

        danke für den Tip, aber daran lags anscheinend nicht...
        Jedenfalls macht es keinen Unterschied :-(

        Grüße

  2. 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.