Eli ongelma on seuraava:
Vieraskirjani ottaa uudet rivit aina uusina viesteinä.
Tätä varten olen laittanut seuraavanlaisen skriptan:
$viesti = str_replace("\n", "<br>", $viesti);
Kuitenkin, kun muokkaa admin-paneelista viestiä, rivit ovat tyyliin
<br>
<br>
<br>
..ja kun tallentaa muutokset, tämä ihanasti sekoittaa kirjan tyhjillä viesteillä.
Mikä neuvoksi?
Siin muokkauksessa ilmeisesti tulostaa johonki text areaan niin sitä tulostusta ennen toi.
$viesti = str_replace("<br>", "\n", $viesti);
ja sit kun tallennetaan muokkaus niin uudestaa
$viesti = str_replace("\n", "<br>", $viesti);
hmm
ei onnistunut....
käsittelevä tiedosto näyttää tältä:
$kirjoitettava = stripslashes($_POST['data']); $tt = fopen("tekstiteidosto", "w"); fwrite($tt, "$kirjoitettava"); header("location: xxx.php");
Kirjoitusmodeksi a, w tyhjentää koko tiedoston.
EDIT: Ach so, vois lukea viestit ennen vastailua.
sen kuuluukin olla w, koska muokkaan tiedostoa, en lisää sen perään mtn
No miltä tiedoston _pitäisi_ näyttää muokkauksen jälkeen ja miltä se sitten näyttää? Ratkaisu on varmasti yksinkertainen, mutta kysymyksesi hieman epämääräinen. Jos sinne tulee noita ylimääräisiä rivinvaihtoja, niin KaPe:han tuossa jo mainitsi ratkaisun.
Korvaa teksti
$viesti = str_replace("\n", "<br>", $viesti);
tekstillä:
$viesti = str_replace("\r\n", "<br>", $viesti);
Jos nyt tarkkoja ollaan, niin:
$viesti = str_replace(array("\r\n","\r","\n"),"<br />",$viesti);
"\r\n" on ainoastaan Windowsin rivinvaihto. Unix-rivinvaihto sen sijaan on "\n" ja tottakai Macilläkin pitää olla erilainen rivinvaihto, ettei mene liian helpoksi: "\r" (korjatkaa, jos muistin jotain väärin)
ajv kirjoitti:
Jos nyt tarkkoja ollaan, niin:
$viesti = str_replace(array("\r\n","\r","\n")," ",$viesti);"\r\n" on ainoastaan Windowsin rivinvaihto. Unix-rivinvaihto sen sijaan on "\n" ja tottakai Macilläkin pitää olla erilainen rivinvaihto, ettei mene liian helpoksi: "\r" (korjatkaa, jos muistin jotain väärin)
Tuhannet kiitokseni, jos nekään riittää :)
Voi olla että olen vajaajärkinen, mutta mikä ero on
$viesti = str_replace(array("\r\n","\r","\n"),"<br />",$viesti); //ja $viesti=nl2br($viesti);
Tuo nl2br() ei poista sitä rivinvaihtoa, joten jos tekstitiedostossa data on riveittäin, niin tuo ei käy ;)
Höh. Olin oikeassa, vajaajärkinen mikä vajaajärkinen.
manuaali kirjoitti:
Inserts HTML line breaks before all newlines in a string
Siinähän se selvästi sanotaan
Aihe on jo aika vanha, joten et voi enää vastata siihen.