Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
Turbo Delphi für Win32
|
Re: PHP: Regulärer Ausdruck für Listen (wiki-style)
5. Mai 2007, 10:28
Hi,
danke für dein Angebot. Habe es jetzt aber doch selber hinbekommen. Ist wahrscheinlich in etwa das Gleiche Vorgehen:
Code:
$filecontent = file(the_filename());
$output = "";
$inlist = true;
$listlevel = 0;
foreach ($filecontent as $line) {
// Alles escapen
$line = utf8_encode(htmlentities(utf8_decode($line)));
/*
* <ul>-Listen-Parsing
* (c) by Christopher Harms, 2007
*
*/
if (strpos(trim($line), "* ") === 0) {
if (!$inlist) {
$inlist = true;
/* Liste eröffnen */
$output .= "<ul>\n";
} elseif ($listlevel > 0) {
/* Letzte Liste schließen */
$output .= "\n";
for ($idx = 1; $idx <= $listlevel; $idx++) {
$output .= "[/list]\n";
}
$listlevel--;
} else {
/* Letztes Item wieder schließen */
$output .= "\n";
}
/* Eintrag in Liste einfügen */
$line = str_replace("*", "", $line);
$line = trim($line);
$line = "[*]" . $line;
} else {
if ($inlist) {
if (trim($line) == "") {
/* Liste muss geschlossen werden. */
$output .= "\n";
for ($idx = 0; $idx <= $listlevel; $idx++) {
$output .= "[/list]\n";
}
$inlist = false;
$listlevel = 0;
} elseif (strpos(trim($line), ":* ") === 0) {
if ($listlevel === 0) {
$listlevel++;
/* Eine Unter-Liste eröffnen */
$output .= "<ul>\n";
}
/* Element hinzufügen */
$line = str_replace(":*", "", $line);
$line = trim($line);
$line = "[*]" . $line;
} else {
/* Gehört noch zum aktuellen Item */
$output .= "
\n";
}
}
}
// Restliches Parsing ...
$output .= $line;
}
if ($inlist) {
/* Liste wurde nicht geschlossen */
$output .= "\n[/list]\n";
}
print $output;
Chris
|
|
Zitat
|