Also es ist so:
Ich habe ein Toll, bei deim man online Inhalte verändern kann.
Es erscheint ein Textfeld, indem eine Datei eingecludet wird.
Diese wird includet, wenn file=datei.php oben im URL Feld steht.
wenn z.B. file=home.php steht, kommt der Inhalt der Datei ins Textfeld.
Wenn man auf Speichern klickt, wird dies zu einer Datei weitergeleitet, die alle Abstände, die mit der Entertaste gemacht werden mit <br /> ersetzt. Der TExt wird natürlich auch geschrieben. Diese Datei wird dann eben geändert.
Der Haken:
Wenn ich die Datei erneut aufrufe, um den Inhalt zu bearbeiten, dann erscheinen alle <br /> Codes. ZUsätzlich sind dann noch die Abstände von vorher.
Das heisst, dass wenn ich etwas zum 2. mal speichere, kommt ein <br /> mehr hinzu. Bei jedem mal immer eins mehr.
Also müsste ich bevor ich es zum 2. mal geändert habe, alle <br /> Codes entfernen, dass nur einer geschrieben wird. In der Datei, die die Inhalte schreibt, habe ich schon nl2br verwendet.
Diese macht aus allen \n ein <br />, wie du vielleicht schon weisst.
Anstatt alle <br /> zu entfernen, bevor ich sie zum 2. oder x. mal speichere, dachte ich, man könnte es so machen, dass alle <br /> Codes nicht eingeschrieben werden, wenn ich eine Datei bearbeite.
Momentan sieht mein Code, beim Aufrufen so aus:
PHP:
<?php
if(!isset($_GET['file']))
{
$_GET['file'] = print "Wähle eine Datei aus.";
}
switch($_GET['file'])
{
case $file : include($pfad.$file); break;
}
?>
$file wurde hier bestimmt:
PHP:
include"config.php";
if(!isset($file))
{
echo' Wähle aus, welche Datei du bearbeiten möchtest.<br><br>';
if ($handle = opendir($pfad))
{
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "-<a href=admin.php?site=content_bearbeiten&file=$file>$file</a><br>\n";
}
}
closedir($handle);
}
}
Dieser Code erstellt eine Liste, von Dateien die in einem bestimmten Ordner ist.
Wenn man auf eine Datei klickt, dann ruft man im URL Feld die Datei auf mit file=ausgewaehltedatei.php
Der Pfad wurde in config.php geschrieben, die eingecludet ist in der Datei.
in der Config siehts so aus:
PHP:
$pfad = "../pfad/der/inhalte/";
Und nun möchte ich wissen, wie ich meinen momentanen Code so ändern kann, dass alle <br /> nicht angezeigt werden.
Dieser hier:
PHP:
<?php
if(!isset($_GET['file']))
{
$_GET['file'] = print "Wähle eine Datei aus.";
}
switch($_GET['file'])
{
case $file : include($pfad.$file); break;
}
?>
MfG, matibaski
Ich hoffe jetzt weisst du, wieso ich alle <br /> ausblenden möchte.
MfG, matibaski
PS:
Hier ist der Code, der den Inhalt schreibt. Dort ist auch nl2br drin.
PHP:
<?php
include"config.php";
$filename = $pfad.$_REQUEST['dataid']; // Dateiname wird bestimmt
$somecontent = nl2br($_REQUEST['text']); // Inhalt wird übernommen
//Prüfen ob sich in das Verzeichnis schreiben lässt
if(!is_writable($pfad))
{
die (" Kann nicht ins verzeichnis $pfad schreiben! Bitte prüfen, ob der CHMOD der Ordner (../deineinhalte/) den CHMOD von 777 hat.");
}
if(!$handle = fopen($filename,"w+"))
{
die (" Kann Datei {$filename} nicht bearbeiten! Bitte prüfen, ob der CHMOD der Dateien auf 777 gestellt ist.");
}
else
{
fwrite($handle, $somecontent);
fclose($handle);
echo "Datei $filename wurde erfolgreich bearbeitet<br><br><a href=admin.php?site=content_bearbeiten>Zurück</a><br><br><b>Vorschau:</b><br><br>$somecontent";
}
?>
Ich denke du kommst nun draus...
Habe gedacht, ich lasse mal den oberen Teil für flapo, damit er sieht wieso ich <br /> ersetzten will.
Ich habs so gemacht:
PHP:
$include = $pfad.$_GET['file'];
if(!isset($_GET['file']))
{
print"Wähle eine Datei aus!";
}
$filename = $include;
$handle = fopen($filename, "r"); //r steht für read/lesen
$text = fread($handle, filesize($filename));
$text = str_replace("<br>", "", $text);
$text = str_replace("<br/>", "", $text);
$text = str_replace("<br />", "", $text); //oder was auch immer...
echo $text;