Neuling: preg_match_all wer kann helfen

Hallo,

ich habe einen Text wie folgt:

text text <br>
text text text text text <br>
text text text <br>
text <br>
-----------------------------------<br>
text text text text <br>
text text <br>
text <br>
text text text text text <br>
text <br>
-----------------------------------<br>
text text <br>
text text text text text <br>
text text text <br>
text <br>

So jetzt möchte ich in die variable $text den text zwischen den -------
rausfiltern. Wie geht das, wie kann ich dazu die Funktion  preg_match_all nutzen?

Bitte postet mal einen php script dazu.

Danke.

  1. Hallo Neuling,

    text text <br>
    text text text text text <br>
    text text text <br>
    text <br>
    -----------------------------------<br>
    text text text text <br>
    text text <br>
    text <br>
    text text text text text <br>
    text <br>
    -----------------------------------<br>
    text text <br>
    text text text text text <br>
    text text text <br>
    text <br>

    unter der Voraussetzung, dass der Trenner immer aus der gleichen Zeichenkette besteht, würde sich hier eher $text=[link:http://de2.php.net/manual/en/function.explode.php@title=explode]($trenner,$text); anbieten. An die einzelnen Textsegmente kommst Du dann über den Array-Schlüssel (vgl. Type Array).

    Fragen? Frag!

    Gruß aus Berlin!
    eddi

    --
    Sich einem Ziel zu verschreiben, sollte ein Prüfen der damit verbundenen Intension und ein Überprüfen der einzusetzenden Mittel vorangehen, sonst türmen sich immer wieder Wolkenschlösser auf, von denen aus zwar herabgesehen wird. Die aber mit einem Blick auf die Basis zerfallen.
  2. Wie geht das, wie kann ich dazu die Funktion  preg_match_all nutzen?

    Ein typischer Fall von "I know, I’ll use regular expressions.". Das ist natürlich nicht immer schlau, einen entsprechend einfachen Ansatz hat dir Edgar schon geliefert.

    Natürlich ist es auch mit einem regulären Ausdruck möglich (wenn auch unnötig kompliziert) - preg_match_all willst du dann vermutlich aber nicht nutzen, wohl eher preg_match, da offenbar nur an "einem Treffer" interessiert bist - oder?

  3. (Hallo|Hi(ho)|Tag) Neuling,

    text text <br>
    text text text text text <br>
    text text text <br>
    text <br>
    -----------------------------------<br>
    text text text text <br>
    text text <br>
    text <br>
    text text text text text <br>
    text <br>
    -----------------------------------<br>
    text text <br>
    text text text text text <br>
    text text text <br>
    text <br>

    So jetzt möchte ich in die variable $text den text zwischen den -------
    rausfiltern. Wie geht das, ...

    Hängt davon ab, was du unter "rausfiltern" verstehst.
    Entfernen geht so:

      
    $filtered = preg_replace('/(-{35})(.+)(-{35})/s', '$1$3', $input);  
    
    

    Extrahieren (nur das Teilstück behalten) geht so:

      
    $filtered = preg_match('/(-{35})(.+)(-{35})/s', $input, $matches) ? $matches[2] : '';  
    
    

    Zeilenumbrüche und Whitespace-Zeichen hab ich ignoriert, schließlich sollst du die Möglichkeit
    haben, auch noch selbst damit zu experimentieren. ;-)

    ... wie kann ich dazu die Funktion  preg_match_all nutzen?

    Gar nicht. Vielleicht solltest du dich erstmal darüber informieren,
     welche preg_...()-Funktion man wie verwenden kann. Guckst du:
    http://php.net/manual/en/book.pcre.php
    ... und wenn sie wieder erreichbar ist, auch die deutsche Variante:
    http://php.net/manual/de/book.pcre.php

    MffG
    EisFuX