Inhalte eines Tags, reguläre Ausdrücke

sipoh

Erfahrenes Mitglied
Hallo,

ich möchte den inhalt eines Tags auslesen. Dazu habe ich mir jetzt krampfhaft folgendes zusammengeschrieben:

HTML:
/* <link 14="" -="" internal-link="" Öffnet="" internen="" link="" im="" aktuellen="" fenster="">  */
preg_match_all("{<link(.*?)[^>]>}", $sql2r['bodytext'], $inhalt);

// Ausgabe: Array([1] => 14 - internal-link "Öffnet internen Link im aktuellen Fenster )

Ist das korrekt?

PS: Es sollen nur "<link>"-Tags sein.
 
Es kommt darauf an, was du genau haben willst. Wenn die Ausgabe dem entspricht, was du dir vorgestellt hast, dann ist es korrekt. Da ich aber nicht hellsehen kann, und damit auch nicht weiß, wie das Ergebnis lauten soll, kann ich dir das weder bestätigen noch dementieren.
 
Das stimmt allerdings. Die Ausgabe ist zudem nicht die, die ich haben wollte.

Wenn Typo3 Links nicht parst, sieht das so aus:

HTML:
<link 2="" -="" internal-link="" Öffnet="" internen="" link="" im="" aktuellen="" fenster="">

Die Ausgabe, die ich derzeit erziehle, ist folgende:

HTML:
Array ( [0] => Array ( [0] =>  ) [1] => Array ( [0] => 2 - internal-link "Öffnet internen Link im aktuellen Fenster ) )

Mir kommt es im Speziellen auf die 2="" an, da die 2 stellvertretend für die Seiten-ID im Typo ist. Ziel soll es letztendlich sein, dieses Typo-Konstrukt in einen Link umzuwandeln.
 
PHP:
function getAttributes($tag)
{
    preg_match('/<[^>](.*)>/', $tag, $matches);
    $matches = explode(' ', $matches[1]);

    $results = array();
    foreach($matches as $match)
    {
        preg_match('/(.+?)="(.*?)"/', $match, $tagmatch);
        if(isset($tagmatch[1]) && isset($tagmatch[2]))
          $results[$tagmatch[1]] = $tagmatch[2];
    }

    return $results;

}

$html = '<link 2="" -="" internal-link="" Öffnet="" internen="" link="" im="" aktuellen="" fenster="">';

echo "<pre>";
print_r ( getAttributes($html) );
echo "</pre>";

Eine schönere Lösung hab ich nicht finden können. Vielleicht findest du auf http://www.regexlib.com noch was eleganteres.
 
Zurück