Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]edycja pliku txt online
Forum PHP.pl > Forum > Przedszkole
madel
Mam skrypt php za pomocą którego mogę edytowac online wpisany wcześniej plik tekstowy (oczywiście z nadanymi odpowiednimi atrybutami).
Problem jest taki, że przy wpisaniu cudzysłowów do tekstu, po zapisie skrypt dodaje jeszcze backslashe.
Przykład: gdy wpiszę "cytat" powstanie po zapisie \"cytat\".
Jak to wyeliminować?
Oto kod:

  1. <?php
  2. $fileName="edytowany.txt";
  3. //zapisywanie
  4. $tresc=$_POST["tresc"];
  5. if(isset($tresc))
  6. {  
  7. $fout=fopen($fileName,"w");  
  8.  
  9.  if($fout!=FALSE)
  10.  {
  11. fputs($fout,$tresc);
  12. fclose($fout);
  13.  }  
  14. }
  15.  
  16. //wypisywanie
  17. if(file_exists($fileName))
  18. {
  19.  $fin=fopen($fileName,"rb");
  20.  
  21.  if($fin!=FALSE)
  22.  {
  23. while(!(feof($fin)))
  24. {
  25.  $x=fgets($fin,1024);
  26. $c.=$x;
  27. //$cc.=$x."<br>";
  28. }
  29. //print(htmlspecialchars($c));
  30. fclose($fin);
  31.  }
  32. }  
  33.  
  34.  //formularz  
  35.  $html11=
  36. '
  37.  
  38. <form method="POST" action="edit.php">
  39. <textarea name="tresc" cols="85" rows="20" maxlength="5">';
  40.  
  41. $html12=
  42. '</textarea>
  43. <input type="submit" value="Wyslij">
  44. </form>
  45. ';
  46.  echo "<hr>n";  
  47.  echo $html11;
  48.  echo $html12; 
  49.  echo "<hr>n";
  50. echo "<pre>";
  51. echo "</pre>";
  52. ?>


Dodałem
  1. <?php
  2. $tresc = stripslashes($tresc);
  3. ?>

po czwartej linii, backslashe już nie dodawało ale co jakiś czas kasowało mi zawartość edytowanego pliku.
A jak zastosować w tym skrypcie 'łamanie wierszy'? Aby odczytywany i wyświetlany tekst nie wyjeżdżał mi poza obręb ekranu?
Powinno się zastosować
  1. <?php
  2. $questionmark.gifquestionmark.gif= wordwrap($questionmark.gifquestionmark.gif, 100, "n", 1);
  3. ?>

tylko w którym miejscu? Chciałbym aby łamanie wierszy następowało tylko przy odczycie - przy oglądaniu zawartości (nie przy zapisywaniu).
desavil
Dołączam się do pytania.
Blame
Po pierwsze slashe: nie usuwaj ich przy dodawaniu tylko przy wyświetlaniu tekstu, wtedy wszystko będzie ok.
A co do łamania linii to wordwrap nie jest dobrym pomysłem. Jeśli podasz textarea jaką ma mieć szerokość to on sam sobie będzie dodawał spacje.
desavil
A mógł by Pan to zmienić bo męczę się z tym już od godziny i dalej mam slashe.
Blame
Z tego co widzę, to treść dajesz do zmiennej $c, więc przed wyświetleniem użyj na niej stripslashes a potem htmlspecialchars.
I jeszcze zamiast dawać wszystko do tagów <pre></pre> możesz użyć nl2br.
desavil
Już zamieniłem w ten sposób i działa:
Cytat
$tresc=stripslashes($_POST["tresc"]);


PS.
A da się jeszcze zrobić, aby edytować określony element z tekstu dajmy na to mam np taki teks to edycji:
ip = localhost
port = 8000

i user ma takie coś:
Twoje ip serwera to (input) localhost (input)
Twój port to (input)8000 (input)

i tylko widzi to localhost oraz port w osobnych inputach

I jeszcze jedno czy da się zrobić tak, że edytuję sobie bazę danych i to co edytuję to się zmienia/dodaje w pliku automatycznie.

Pozdrawiam

@Odświeżam
cim
Witam,

przeczytaj to: http://phpedia.pl/wiki/Jak_korzysta%C4%87_...tylu_php.ini%3F bo chyba o tym myślisz.

Żeby przy zapisie do danych bazy aktualizować plik to wystarczy po mysql_query zrobić zapis do pliku, tylko nie do końca rozumiem logike - to samo chcesz zapisywać do bazy danych i do pliku?

Pozdrawiam
desavil
Nie, chciałem aby prościej było z bazą danych, że tam sobie edytuje wyciągam określone pola i potem jak zapisuje i coś zmieniam to automatycznie się zmienia w pliku tekstowym. Ponieważ znam się lepiej na operacjach związanych z bazą danych niż na plikach.
erix
A czemu leczycie skutki zamiast przyczyn? Problemem jest magic_quotes.
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.