Ankündigung

Einklappen
Keine Ankündigung bisher.

Reguläre Ausdrücke

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Reguläre Ausdrücke

    hi,

    so sieht z.Z. mein ausdruck aus.

    ich will alles was zwischen .... <h2>Quellen</h2> steht herausfiltern. die gesamte Zeichenkette befindet sich in einem string, der über mehrere zeilen geht. auch sonder- oder steuerzeichen können drin sein. wie kann ich sicherstellen, dass nur der string zwischen den beiden tags gefunden wird?

    mein versuch war:

    $regex = '/(\<\!\-\- start content \-\-\>)(.*?)(\<h2\>Quellen\<\/h2\>)/i';

    aber ohne erfolg.

  • #2
    Warum so kompliziert?
    Nutz die BBCode-Class: http://www.christian-seiler.de/projekte/php/bbcode/

    Die Unterstützt das, was du willst.

    Gruß
    Henning

    Kommentar


    • #3
      mir geht es darum selber was zu machen und nicht immer alles nur aus dem i-net zu holen. ich will einfach verstehen wie diese ausdrücke funktionieren und warum gerade meine variante falsch ist und was ich ändern muss. sicherlich kann ich dann immernoch auf fertige sachen zurückgreifen. aber ich will ja was dazulernen. und die bbcode-class is mir einfach zu fern.

      Kommentar


      • #4
        Vermutlich auch Wikipedia als Quelle.
        Ein link zu einer passenden Seite wäre hilfreich.

        Kommentar


        • #5
          (gelöscht)

          Kommentar


          • #6
            Öhm, statt des billigen Abklatsches nehme ich lieber das Original(?) von http://de.wikinews.org/wiki/Gabun:_D...ut_bei_Wahl_an


            $regex = '/(\<\!\-\- start content \-\-\>)(.*?)(\<h2\>Quellen\<\/h2\>)/i';
            < ist kein Sonderzeichen, also nur <, kein \<
            Ebenso !, ebenso -, ebenso >
            (), warum willst Du diesen statischen Bereich aufheben, sprich: warum die runden Klammern?
            ebenso (<h2>Quellen</h2>)
            (.*?) möglich, aber eigentlich kann das ganze Muster ungreedy laufen, Option U
            Auf http://php.speedbone.de/manual/de/re....modifiers.php nach PCRE_DOTALL suchen.
            i (PCRE_CASELESS) ist nicht notwendig, Du kennst die Groß/Kleinschreibung der festen Bestandteile.
            Als Trennzeichen eines auswählen, das nicht im Muster selbst enthalten ist, zB ~

            getestet:
            PHP-Code:
            <?php
            $url 
            'http://de.wikinews.org/wiki/Gabun:_Dienst%C3%A4ltester_Pr%C3%A4sident_Afrikas_tritt_erneut_bei_Wahl_an';
            $regex '~(.+)<h2>Quellen</h2>~iUs';

            $contents file_get_contents($url);
            if (
            preg_match($regex$contents$matches)) {
                
            header('Content-Type: text/html; charset=utf-8');
            ?>
            <html>
                <head><title>alles nur geklaut und gezogemn und geraubt</title></head>
                <body>
                    <?php echo $matches[1]; ?>
                </body>
            </html>
            <?php
            }
            else {
                echo 
            'geht nicht';
            }
            ?>

            Kommentar


            • #7
              ok

              ich dank dir ,
              du hast mir einen ganzen schritt weiter geholfen.

              ich werd mir nochmal die sachen wie ~iUs und sowas angucken.
              ich konnte nur nicht viel im netz finden zumindes nichts deutsches.

              gute nacht!

              Kommentar

              Lädt...
              X