Regex für </span> Tags

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

  • Regex für </span> Tags

    Hallo Allerseits,

    ich suche eine regex die mir aus nested HTML Tags die </span> herausfiltert, von außen nach innen.

    Hier ein HTML Beispiel:

    HTML-Code:
    <span>Hallo, das ist <span>ein</span> langer <span>Satz</span></span>.
    Ich habe folgenden Code:

    PHP-Code:
    <?php

        
    // error_reporting(E_ALL);
        // ini_set('display_errors', 'on');

        
    $i 1;

        
    $spans '<span>Hallo, das ist <span>ein</span> langer <span>Satz</span></span>  ';
        
        
    $replaced preg_replace_callback(
            
    '|</span>|',
            
    repl,
            
    $spans
        
    );
        
        echo 
    $replaced;
        
        function 
    repl ($matches) {
            global 
    $i;
            return 
    $i++;
        }

    ?>
    Wie kann ich meine Funktion dazubewegen, nicht der Reihe nach zu gehen sondern von außen nach innen. Ich müsste ja dazu eine regex in '|</span>|' eintragen, aber leider stehe ich da auf dem Schlauch. :-(

    Gruß Yvon
    Zuletzt geändert von yfolz; 02.09.2010, 16:26.

  • #2
    Hallo,

    die einfachste Variante besteht darin, erstmal alle "<span"s durch \x01 und alle "</span>"s durch \x02 zu ersetzen und dann immer wieder mit "/\\x01([^\\x01\\x02]*)\\x02/" den Inhalt zu holen.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Hallo Amica,

      ich werde es ausprobieren. Danke!

      Gruß Yvon

      Kommentar


      • #4
        Am sinnvollsten wäre es, da nicht mit RegEx ranzugehen, sondern mit einem DOM-Parser.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Danke für die Antworten.

          D.h. ich könnte beispielsweise DOMDocument von PHP benutzen oder den Simple HTML Parser. Wie wäre dann die Syntax für ein </span>?

          PHP-Code:
          $inhalte->find('span'); 
          liefert mir ja "alle" spans. Ich brauch' aber nur die schliessenden.

          Kommentar


          • #6
            Du brauchst nicht die schließenden, sondern die in der DOM-Hierarchie am höchsten. Und auch das ist kein Problem, wenn auch nicht unbedingt mit einem Methodenaufruf. Konkret spazierst du alle Elemente rekursiv durch bis du zu einem Span Element gelangst. Ab da läuft die Behandlung anders: Alle Textinhalte auslesen, zwischenspeichern und am Ende in das oberste Span Element einfügen. Und weiter …

            Aber: Ist es nicht so, dass in einem span gar kein weiteres span vorkommen darf?
            [FONT="Helvetica"]twitter.com/unset[/FONT]

            Shitstorm Podcast – Wöchentliches Auskotzen

            Kommentar


            • #7
              Ich glaube nicht, aber das ist leider die Struktur die ich nun mal geliefert bekomme. Okay, dann muss ich hier noch ein wenig coden, hatte gehofft es geht einfacher

              Kommentar

              Lädt...
              X