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

  • Alpha Centauri
    hat ein Thema erstellt Reguläre Ausdrücke.

    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.

  • Alpha Centauri
    antwortet
    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!

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Ö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';
    }
    ?>

    Einen Kommentar schreiben:


  • Alpha Centauri
    antwortet
    (gelöscht)

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Vermutlich auch Wikipedia als Quelle.
    Ein link zu einer passenden Seite wäre hilfreich.

    Einen Kommentar schreiben:


  • Alpha Centauri
    antwortet
    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.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    Warum so kompliziert?
    Nutz die BBCode-Class: http://www.christian-seiler.de/projekte/php/bbcode/

    Die Unterstützt das, was du willst.

    Gruß
    Henning

    Einen Kommentar schreiben:

Lädt...
X