Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] pisanie do pliku: samo dopisuje mi spacje i tabulator
Forum PHP.pl > Forum > Przedszkole
hiszpanespaniol
witam.

sytuacja jest taka:
wyświetlając tekst na stronie robię tak: odczytuję plik tekstowy (tablica) i każdy element tablicy umieszczam w paragrafach HTML. Dzięki temu rozwiązaniu (tablica zamiast wyświetlenia pliku jako jednej całości) stworzyłem sobie możliwość dodania obrazka przy każdym paragrafie nie umieszczając kodu obrazka w stronie (wgrywane obrazki przyjmują nazwę która jest kolejnym kluczem tablicy). to wszystko działa dobrze, więc problem jest gdzie indziej.

problem:
podczas edycji pliku tekstowego skrypt sam dopisuje mi do pliku dwie spacje, przejście do nowej linii i tabulator. Dopiero po tym pojawia się treść pliku (nawet gdy w edytorze gedit edytuję plik, to skrypt go "poprawia" podczas edycji) i nazwy obrazków przestają odpowiadać już paragrafom (na dodatek przechodzą do wyższych paragrafów z każdą edycją, bo skrypt znów dopisuje swoje znaki).

powinno być tak:
paragraf1
paragraf2
paragraf3


a jest tak:
//w tej linii są dwie spacje
paragraf1 //przed tym paragrafem jest tabulator, ale tu na forum go nie widać
paragraf2
paragraf3


poniżej podaję kod PHP odpowiedzialny za edycję pliku:

  1. <?php
  2. elseif (!empty($_POST['submit'])) 
  3. { // funkcja aktualizacji treści
  4. $ktory=$_POST['pozycja_menu'];
  5. $tresc=$_POST['tresc'];
  6. $fileName=$folder_podstron.$ktory.'.html';
  7. if(isset($tresc))
  8. {  
  9. $fout=fopen($fileName,"w");  
  10. if($fout!=FALSE)
  11. {
  12. fputs($fout,$tresc);
  13. fclose($fout);
  14. echo $potwierdzenie;
  15. }  
  16. }
  17. if(file_exists($fileName))
  18. {
  19. $fin=fopen($fileName,"rb");
  20. if($fin!=FALSE)
  21. {
  22. while(!(feof($fin)))
  23. {
  24. $x=fgets($fin,1024);
  25. $c.=$x;
  26. }
  27. fclose($fin);
  28. }
  29. }
  30. }
  31. ?>


czytałem w manualu coś o tym, że jest różnica pomiędzy parametrem 'w', a 'w+' i, że tam komuś skrypt kasował znaki, ale u mnie one się dodają zamiast kasować.
Proszę o pomoc
hiszpanespaniol
jest przerwa więc odpisuje.
próbowałem użyć już trim, zapomniałem o tym wspomnieć. ale próbowałem go w innym miejscu.
całość kodu wygląda tak:

  1. <?php
  2. $c = file_get_contents($folder_podstron.$ktory.'.html');
  3. if (empty($_POST['submit'])) 
  4. {
  5. include ($folder_html_inc.'admin_aktual.php');
  6. }
  7. elseif (!empty($_POST['submit'])) 
  8. { // funkcja aktualizacji treści
  9. $ktory=$_POST['pozycja_menu'];
  10. $tresc=$_POST['tresc'];
  11. $fileName=$folder_podstron.$ktory.'.html';
  12. if(isset($tresc))
  13. {  
  14. $fout=fopen($fileName,"w");  
  15. if($fout!=FALSE)
  16. {
  17. fputs($fout,$tresc);
  18. fclose($fout);
  19. echo $potwierdzenie;
  20. }  
  21. }
  22. if(file_exists($fileName))
  23. {
  24. $fin=fopen($fileName,"rb");
  25. if($fin!=FALSE)
  26. {
  27. while(!(feof($fin)))
  28. {
  29. $x=fgets($fin,1024);
  30. $c.=$x;
  31. }
  32. fclose($fin);
  33. }
  34. }
  35. }
  36. ?>


czyli jeśli zaczynam edycję pliku i jeszcze nie wprowadziłem zmian, to wyświetla mi się strona z formularzem w którym mogę zmienić treść pliku. Jak już zmienię treść i "POSTnę" zmiany, to wtedy wiadomo, druga część kodu.

w przypadku rozpoczynania edycji, includuję plik html który wygląda tak ($folder_html_inc.admin_aktual.php) :

  1. <form method="POST">
  2. <input type="hidden" name="pozycja_menu" value="<?php echo $ktory; ?>"><br />
  3. <input type="hidden" name="co_wyswietlic" value="potwierdzenie">
  4. <textarea name="tresc" style="width: 400px; height: 300px; font-family:monospace; font-size:13px;" wrap="off">
  5. <?php print(htmlspecialchars(trim($c))); ?>
  6. <input type="submit" value="Wyslij" name="submit">
  7. </form>


trim tutaj nie daje oczekiwanych rezultatów. nie wiem gdzie mam je wstawić. dodam jeszcze, ze skrypt dopisuje te spacje, enter i tabulator przed wprowadzeniem zmian, przy wyświetleniu pliku w textarea formularza. Gdy dokonam zmian, to znów mi dodaje.

edit:
oczywiście w trakcie meczu też odpiszę natychmiast


---------------------------------------------------
EDIT:
MÓJ BŁĄD. zauważyłem, że w pliku formularza ja sam dałem dwie spoacje, enter i tabulator, żeby ładnie html wyglądał. problem rozwiązany. Przepraszam wszystkich za zawracanie głowy
--------------------------------------------------
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.