[MEGOLDVA] Fájl szerkesztése

Üdv!

Adott egy php kód:


$loadcontent = $directory.'/serverconfig.cfg';
if($_POST['save_file']) {

$savecontent = stripslashes($_POST['savecontent']);
$fp = @fopen($loadcontent, "wb");
if ($fp) {
fwrite($fp, $savecontent);
fclose($fp);
}
}
$fp = @fopen($loadcontent, "r");
$loadcontent = fread($fp, filesize($loadcontent));
$loadcontent = htmlspecialchars($loadcontent);
fclose($fp);

Ezzel szerkesztem a fájlt, ami tökéletesen meg is nyitja.
Ám a mentésnél nem töri meg a sorokat, csak 'rn'-t tesz a sorok közé, tehát nem értelmezi a /r/n-t. Már mindenhol kerestem megoldást, de nem találtam.

Ha valaki tudna segíteni megköszönném!
Üdv!

Hozzászólások

file_get_contents()
file_put_contents()

t


$loadcontent = $directory.'/config.cfg';
if($_POST['save_file']) {
file_put_contents($loadcontent, $_POST['savecontent']);
}
$loadcontent = file_get_contents($loadcontent);

Sajnos ugyan az a probléma.

a forrás így néz ki:

param1="auto"
param2="none"
...

És a szerkesztés után:
ha:
stripslahes($_POST['savecontent']);

akkor:

param1="auto"rnparam2="none"rn

ha csak siman:
$_POST['savecontent'];

akkor:

param1=\"auto\"\r\n\param2=\"none\"\r\n\

Mindkét megoldás esetén ezt adja. Nem akarja az igazat.

stripslashes leszedi a \ jeleket, ahogy azt kell neki. Miert meglepo, hogy akkor \r\n is eltunik?

Sikerült megoldani!

A megoldás pedig:

$breakline=str_replace('\r\n', "\r\n", $text);

Nagyon fontos, hogy melyik idézőjelet használjuk, mert ebben az esetben nem mindegy!
(Weblaboron találtam egy régi cikket és abban olvastam)

A teljes kód pedig:


$loadcontent = $directory.'/config.cfg';
if($_POST['save_file']) {
$text=$_POST['savecontent'];

$breakline=str_replace('\r\n', "\r\n", $text);

file_put_contents($loadcontent, stripslashes($breakline));
}
$loadcontent = file_get_contents($loadcontent);