[php] Array füllen mit dem String zwischen zwei Tags?

MarcDK

Banned
Registriert
Mai 2001
Beiträge
3.559
Ich habe jetzt ewig mit preg_match rumgefummelt aber es geht nicht.

Nehmen wir mal folgenden Text:

<h5>sdfsdfsdf</h5>
<h5>uuuuiu</h5>
<h5>ghffg</h5>
<h5>sdfsdfsdf</h5>
<h5>fghfghfgh</h5>
<h5>Marc</h5>

Nun will ich ein Array haben, was den Text zwischen den H5-Tags enthält.

Also:

$array[0] => "sdfsdfsdf"
$array[1] => "uuuuiu"
$array[2] => "ghffg"
...

Nachher will ich dann wieder zurück zu den H5s und darüber dann ein <a id="1"></a> generieren. Das Ergebniss am Ende soll ein Inhaltsverzeichnis mit Sprungmarken sein.

Also einmal eine Liste von den H5-Tags mit Links zu den Sprungmarken die über jedem H5-Tag eingefügt werden sollen.

Jemand ne idee? =/
 
PHP:
preg_match_all("#<h5>(.*?)</h5>#is", $string, $array);

Ist zwar ungetestet, aber das sollte dir ein zweidimensionales Array mit den gewünschten Werten zurückgeben.
 
Super! Das klappt hervorragend! =) Nun kann ich relativ einfach die Liste mit den Links ausgeben. Nur hat jemand eine Idee, wie nun die ursprünglichen <h5></h5>-Tags mit der Sprungmarke versehe? Ich müsste ja darüber ein

<a id="$zahl"></a> einfügen wobei $zahl hochzählt. Gibt es eine Funktion, der man nun sagt, dass vor jedem H5 nun etwas eingefügt werden muss?

Sorry, für meine dummen Fragen aber ich weiß nicht, wie man nach Problemstellungen auf php.net sucht. Und vielleicht ist es für ein paar Leute hier einfacher als für mich wenn ich mich dort tot suche.

Schonmal danke für eure Hilfe!
 
Am besten mit Preg-Replace unter der Verwendung der Callback-Funktion:
PHP:
<?php

function makeLink($string) {
    static $counter = 0;
    return '<a href="'.$counter++.'">'.$string.'</a>';
}

$string = "<h5>sdfsdfsdf</h5>
<h5>uuuuiu</h5>
<h5>ghffg</h5>
<h5>sdfsdfsdf</h5>
<h5>fghfghfgh</h5>
<h5>Marc</h5>";

echo preg_replace("#<h5>(.*?)</h5>#ie","makeLink('\\1')",$string);

?>
 
Zurück
Oben