Verlauf: Startseite ›› Code ›› PHP

RegExp - Headlines als Liste

mit Anker versehen

Alle Headlines (h1, h2) des Strings werden als Sprungliste (ul-Liste) ausgegeben. So kann ganz am Anfang der Seite eine Navigation zu den einzelnen Überschriften eingebunden werden.

Code

<?php
$str = '
<h1>h1 1</h1>
<p>ich bin wer ich bin</p>

<h1>h1 2</h1>
<p>ich bin wer ich bin</p>
<h2>h2 2.1</h2>
<h2>h2 2.2</h2>
';

$ptr = '/<h([1-6])>(.+?)<\/h\1>/is';
preg_match_all($ptr, $str, $matches);

$h1 = '1';
for ($i = 0, $j = count($matches[0]); $i < $j; $i++) {

$a = $matches[1][$i];
$rpl = '<a href="experimental/?#headline'.$i.'">$2</a>';

if ($a == 1) {
$h1_o = $h1;
$arr[$h1_o][$h1_o] = preg_replace($ptr, $rpl, $matches[0][$i]);
$h1++;
$h2 = 1;
}
if ($a == 2) {
$arr[$h1_o][$h1_o.'h2'][$h2] = preg_replace($ptr, $rpl, $matches[0][$i]);
$h2++;
}
}

$out = '<ul>'." ";
for ($i=1; $i<=count($arr); $i++) {
foreach ($arr[$i] as $a) {

if (!is_array($a)) {
$out .= " ".'<li>'.$a;
}
else {
$out .= " ".'<ul>'." ";
foreach ($a as $b) {

if (!is_array($b)) {
$out .= " ".'<li>'.$b.'</li>';
}
}
$out .= " ".'</ul>'." ";
}
$z = next($arr[$i]);
if (!is_array($z)) {
$out .= '</li>';
}

}
}
$out .= " </ul> ";
print $out;
?>

13.04.2006 - 13:42:44

Der letzte Artikel

Redaxo Cheatsheet 4.2

Das Cheatsheet beinhaltet:

OOArticle, OOArticleSlice, OOCategory, OOMedia, OOMediaCategory, Extension Points, REX Variablen, $REX, $REX_ACTION, Moduleingabe, Modulausgabe

Herunterladen kann man es ich auf blumbeet.com. ... zum Artikel

13.05.2009 - 21:38:53 - Thema: Allgemeines

Weitere Artikel

RegExp - Headlines als Liste

mit Anker versehen

Alle Headlines (h1, h2) des Strings werden als Sprungliste (ul-Liste) ausgegeben. So kann ganz am Anfang der Seite eine Navigation zu den einzelnen Überschriften eingebunden werden. ... zum Artikel

13.04.2006 - 13:42:44

Mahlis

Mahlis

Mai 2005
Umsetzung . Programmierung . Content Management System . Hosting . Pflege

www.mahlis.de