Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: proste pytanie o fwrite
Forum PHP.pl > Forum > PHP
devint
Hej

Przejrzalem 3 strony wynikow i nie natknalem sie wiec pytam

Zapisuje do pliku linijki tekstu i na koncu jest znak nowej linii \n

Gdy wyswietlam/edytuje zapisany plik w Notatniku w miejscu gdzie teoretycznie konczy sie linia stoi krzaczek (taki maly kwadracik) a tekst jest ciagly (jakby w jednej linii)

Natomiast jak wrzuce plik do edytora/edytorow html krzaczkow nie ma a tekst jest w kolejnych liniach - tak jak powinien

Podobnie jak klikne F3 w totalcommanderze to jest w nowych liniach.


1)Czy ktos sie z tym spotkal?
2)Czy to w czyms przeszkadza?
3)Czy to wygeneruje jakies bledy w przyszlosci jesli zapisywany plik bedzie typu .php lub .html?
4)Czy mozna temu zaradzic?
5)Czy po prostu olac i nie panikowac wiecej:) ?

pozdr
ennics
pod windows koniec wiersza to zwykle \r\n lub \r (WordPad)

przeszkadza np. w importowaniu bądź eksportowaniu danych z bazy
do plików płaskich (np. csv), lepiej mieć kontorlę smile.gif
devint
no fajnie to wiemy ze krzaki sa beeee jeszcze potrzeba jakiegos rozwiazania

tak na prawde nie zalezy mi na notatniku, ale na tym czy plik .html lub .php bedzie wadliwie funkcjonowal (zle wyswietlal sie) czy nie.

Bo jesli problem jest tylko w notatniku to nie jest to problem

ale jesli problem jest w W3C Validation Service (XHTML 1.0 Transitional) to jest to problem sad.gif

Jak to obejsc/wyeliminowac ?
ennics
najprościej ?

  1. <?php
  2.  
  3. if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
  4. $end_of_line = 'rn';
  5. } else {
  6. $end_of_line = 'n';
  7. }
  8. //...
  9. fwrite($fh, $string . $end_of_line);
  10.  
  11. ?>
devint
Niestety to rozwiazanie nie dziala

testuje to tak:

  1. <?php
  2.  
  3. if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
  4. $end_of_line = ' rn';
  5. } else {
  6. $end_of_line = ' n';
  7. }
  8.  
  9. $somecontent = "Add this to the file 111"."$end_of_line";
  10. $somecontent2 = "Add this to the file 222";
  11.  
  12. if (fwrite($handle, $somecontent) === FALSE) {
  13. echo "Cannot write to file ($filename)";
  14. }
  15. if (fwrite($handle, $somecontent2 . $end_of_line) === FALSE) {
  16. echo "Cannot write to file ($filename)";
  17. }
  18.  
  19. ?>


zapisuje wszystko ale w jednej linni a znaki \r\n traktuje jako tekst wynik jest taki:
Kod
wczesniejszy text   Add this to the file 111 \r\nAdd this to the file 222 \r\n  nastepne wpisy


Potrzebny inny pomysl sad.gif
mike
Znaki typu \r\n muszą znajdować się w cudzysłowach a nie w apostrofach.
devint
mike_mech ma racje

po poprawieniu na cudzyslowy oba zapisy workuja jak trzeba, bez krzaczkow w notatniku i z liniami jak trzeba, jesli ktos sie na to natknie, to powyzej jest rozwiazanie

dzieki
dr_bonzo
Cytat
tak na prawde nie zalezy mi na notatniku, ale na tym czy plik .html lub .php bedzie wadliwie funkcjonowal (zle wyswietlal sie) czy nie.

No pewnie ze bedzie dzialac -- przeciez wiekszosc serwisow stoi na unixach, unixy uzywaja "\n" i serwisy dzialaja.
Vengeance
ale macie problemy dziwne.... :]

devint: z pod php stosuj tylko "\n" i olej to że pod Windows w notatniku tekst ma kszaki i jest ciągły. To nic nie znaczy. Strona wyświetli się poprawnie.... a jeśli chcesz obejrzeć taki plik normalnie, to np. dla WordPad wystarczy ów same \n i będzie łamał linie. Po prostu notatnik jest upośledzony ;p

I nie ma sensu jaka kolwiek zmiana \n na \r\n czy jeszcze cos innego
ennics
Cytat
ale macie problemy dziwne.... :]


Vengeance, przyszłość kreuje się w innych barwach. Może to Ci rozjaśni:

MONAD
Microsoft's Monad: Nuclear Arsenal for Shell Scripting
Windows Vista
devint
Cytat
devint: z pod php stosuj tylko "\n" i olej to że pod Windows w notatniku tekst ma kszaki i jest ciągły. To nic nie znaczy. Strona wyświetli się poprawnie.... a jeśli chcesz obejrzeć taki plik normalnie, to np. dla WordPad wystarczy ów same \n i będzie łamał linie. Po prostu notatnik jest upośledzony ;p


wiesz dzis Ty mi mowisz ze notatnik jest uposledzony a jutro ktos kto placi za to rozwiazanie powie mi "no ale w notatniku sa jakies krzaki, ja tego nie chce"

tak sobie mysle ze jak juz robic cos to dobrze i tyle, jesli mozna jakos zaradzic i to w prosty sposob to trzeba zaradzic i juz...

pozdr
Vengeance
devint: Hmm... w pewnym sensie masz racje, ale ja gdy pisałem tę wypowiedź pewien byłem że ów pliki .txt służą ci jedynie jako miejsce przechowywania jakiś danych. W tym momencie ktoś kto kupi ten skrypt także nie powinien w te pliki zaglądać. Do takich zmian powinieneś dostarczyć odpowiedni panelik administratorski. A jemu już bez roznicy czy notatnik pod Win dobrze to wyswietli czy nie.
devint
Cytat
Do takich zmian powinieneś dostarczyć odpowiedni panelik administratorski. A jemu już bez roznicy czy notatnik pod Win dobrze to wyswietli czy nie.


No i wlasnie na potwierdzenie tego wysypalem sie gdzies dalej w skrypcie i niestety musi byc z krzaczkami bo juz nie chce mi sie kombinowac (czas to pieniadz).
Czasem bardziej oplaca sie uruchomic swoje marketing skills niz zaglebiac sie w bardziej wyrafinowane aspekty techniczne. biggrin.gif

pozdr
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.