camacho: Name in HTML von Klammern

Beitrag lesen

Die normalen Klammern sind in HTML nicht benannt (die offizielle komplette Liste gibt es unter http://www.w3.org/TR/html401/sgml/entities.html) -  Du hast keine Chance.

das habe ich geahnt. Heulheulheul!

Warum versuchst Du das Problem zu umgehen anstatt es zu lösen? Was passiert denn, wenn Klammern und Rauten vorkommen?

Hallo Christian!

Und erstmal Entschuldigung, dass ich mich so langsam zurückgemeldet habe, nachdem du dich gestern so schnell gemeldet hattest.

Ich muss ein Redaktionsystem ohne Datenbankanbindung erstellen. Ich habe es gelöst mit einem Script, der die Beiträge in einer Textdatei speichert

$newfile = fopen($filepath,"w+");
fwrite($newfile,$wholetext);
fclose($newfile);

Die einzelnen Beiträge werden durch "%" getrennt.
Die Unterteile der Beiträge (Titel, Datum, Text...) werden durch "#" getrennt.

Dann lese ich ein Array raus:

$lines = explode("%",$content);
while(list($key) = each($lines)){$user = explode("#",$lines[$key]);}

Das Löschen eines Beitrags funktioniert, ich kann auch einen Beitrag unproblematisch dazu schreiben, aber wenn ich versuche, einen Beitrag zwischen 2 alten zu speichern und _Klammern_ im Text ($user[4]) sind, dann wird eine ID gelöscht und der neue Beitrag wird nicht gespeichert. Die ID der darauffolgenden Beiträgen werden aber richtig erhöht. Z.B. will man nach dem Eintrag 1, ID=1, einen neuen Eintrag "insert" hinzufügen. Eintrag 0 und Eintrag 1 bleiben genau gleich, also mit der gleichen ID, ID=2 ist verschwunden sowohl wie "insert", Eintrag 2 bekommt aber die ID=3 und alle IDs der darauffolgenden Einträge sind brav um 1 erhöht. WARUM????? Ohne Klammern gibt es nämlich überhaupt kein Problem...

Der Code sieht an der Stelle so aus:

while(list($key) = each($lines)){
//user [0] is the number (or id), [1] is the group for the filepath, [2] is the title,
//[3] is the link name for the navigation, [4] is the actual text and [5] is the information about deleting
$user = explode("#",$lines[$key]);
$id = $user[0];
//the ids of the others get put one up unless the new faq simply gets added at the end of the file
if ($idbefore !=""){
//setting new id
$newid = $idbefore + 1;
//adding 1 to the id after the inserted one
if ($id > $newid){$id = $id + 1;}
//recreate a line
$newtext = "%" . $id . "#" . $user[1] . "#" . $user[2] . "#" . $user[3]. "#" . $user[4] . "#" . $user[5];
//adding the line to the rest of the text
$wholetext .= $newtext;
//inserting the line with the new entry and the old one with a new id
if ($id == $newid){
//setting up new line
$newline = "%" . $newid . "#" . $group . "#" . $title . "#" . $linkname . "#" . $text . "#" . $delete;
//reading old line, which is to be replaced
$oldline = "%" . $id . "#" . $user[1] . "#" . $user[2] . "#" . $user[3] . "#" . $user[4] . "#" . $user[5];
//changing the id for the old entry
$idup = $id +1;
//new and old line with new id
$newoldline = $newline . "%" . $idup . "#" . $user[1] . "#" . $user[2] . "#" . $user[3] . "#" . $user[4] . "#" . $user[5];
$wholetext = eregi_replace($oldline, $newoldline, $wholetext);
$wholetext = eregi_replace("%#####", "", $wholetext);
}   // end of   if ($id == $newid)
}   // end of if ($idbefore !="")
else{
//just take the highest id and add one
$id >= $entries;
if ($id != ""){
//recreate a line
$newtext = "%" . $id . "#" . $user[1] . "#" . $user[2] . "#" .$user[3]. "#" . $user[4] . "#" . $user[5];
//adding the line to the rest of the text
$wholetext .= $newtext;
$newid = $id+1;}
else{$newid = "0";}
}   //  end of first else
}       // end of while(list($key) = each($lines))

Ich hoffe, dass das jetzt keine Zumutung ist... Ich habe versucht nur das Wichtigste aus dem Script raus zu nehmen.

Nicola