[php] dubbele \n na inlezen en schrijven

Pagina: 1
Acties:

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik heb voor een forumempje dat ik aan het maken ben zonder database |:( (geen tot beschikking) alles in bestanden gezet. Nu wil ik dat berichten gewijzigd kunnen worden en dat werkt al maar er is een probleempje.

Ik heb een form gemaakt waarin het bericht in een textarea wordt gezet. Als ik dan de inhoud zonder die te veranderen weer in het bestand terug schrijf dan heeft die ineens het dubbele aantal \n. :X

Ik heb dan gewoon met include de inhoud van het bestand verkregen en met fwrite weer terug geschreven.

Waar ligt dit aan. Ligt het aan de textarea die verkeerd met \n omgaat en er nog een bijzet. of is het wat anders. Heeft iemand mischien een suggestie van hoe ik dit kan oplossen? _/-\o_

Noushka's Magnificent Dream | Unity


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Is wat anders, maar de input via include verkrijgen is enorm vies, doe dat gewoon met fread().

Je zult dus wat van je code moeten geven, je doet vast iets als fwrite($text . "\n");
Want er komen heus niet zomaar ineens 2x zoveel \n's en dat gebeurt al helemaal niet door je browser.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
nee, dat doe ik niet.

eerst ff wat code
code:
1
2
3
4
5
<textarea name="message">
<?php
include "bestand.mes";
?>
</textarea>


het verwerking bestand

code:
1
2
3
$fd=fopen("bestand.mes","w") or die("bericht");
$out=fwrite($fd,$message);
fclose($fd);


ik zet er dus geen extra \n bij.

ik zal dat andere eens proberen.

ik heb ook al geprobeerd met file() en dan een voor een de regels uitprinten. dat heeft ook geen zin.

die doet toch hetzelfde als openen,lezen,explode op \n,sluiten dan zou fread ook niet werken

Noushka's Magnificent Dream | Unity


Verwijderd

waarom gebruik je deze functie niet: http://www.php.net/manual//function.file-get-contents.php ?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Al eens bekeken wat er gaat gebeuren als ik een in dat scherm zet? Of erger nog.. wat eigen php code?

ACM zegt niet voor niks dat het erg vies is.....

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
zal het eens proberen

Noushka's Magnificent Dream | Unity


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
hier nog even wat van de nieuwe code met het zelfde probleem

PHP:
1
2
3
4
5
6
7
8
9
10
<textarea cols="50" rows="15" name="message">
<?php 

$filestr = file("bestand.mes"); 

for ($i=0; $i<=count($filestr); $i++) 
    print($filestr[$i]); 

?>
</textarea>


dit is de inhoud van het bestand

code:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10


als ik hem in kladblok open.

en zo krijg ik hem in de textarea

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1

2

3

4

5

6

7

8

9

10


dat zijn dus duidelijk twee \n achter elk cijfer

hier een stukje van het verwerk bestand nog een keer

PHP:
1
2
3
$fd=fopen("bestand.mes","w");
$fout=fwrite($fd,$message);
fclose($fd);


als ik dan in het bestand kijk dan ziet het er ook zo uit als in de textbox. iemand een idee

Noushka's Magnificent Dream | Unity


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je zet er dan ook 2 extra \n's bij ;)
Humm, dat maakt niet zo veel uit.

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
die file_get_contents werkt bij mij niet. is dat een erg nieuwe functie?

Noushka's Magnificent Dream | Unity


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Maar doe es gewoon:
PHP:
1
2
3
4
5
6
echo "<textarea>";
$fp  = fopen("bestand.mes", "r");
while(!feof($fp))
    echo fread($fp, 4096);
fclose($fp);
echo "</textarea>";


Wat trouwens zou kunnen, is dat de tekst afgesloten wordt met \r EN \n en dat om een of andere reden je php vindt dat het allebei als enter-tekens moet beschouwen, wat voor platform draait je php op?

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Jippy dit werkt :)

ik draai het op mijn laptop om te testen.
daarop staat. apache 1.3.20 en php 4.0.6 en mysql.

mischien moet ik alles ff updaten ofzo?

het werkt in ieder geval. Wel vreemd nog steeds dat hij et met die andere manier niet goed deed en nu wel. :? bedankt he

Noushka's Magnificent Dream | Unity


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

nu nog ff html_special_chars en je bent helemaal klaar.......

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
heb ik ook. Hij is zo goed als af nu. dat was et laatste probleempje.

et was toch aan elkaar zonder _ :+

Noushka's Magnificent Dream | Unity

Pagina: 1