Regex für </span> Tags

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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]

    Comment


    • #3
      Hallo Amica,

      ich werde es ausprobieren. Danke!

      Gruß Yvon

      Comment


      • #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.

        Comment


        • #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.

          Comment


          • #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

            Comment


            • #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

              Comment

              Working...
              X