Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kodowanie przy zapisywaniu do pliku
Forum PHP.pl > Forum > Przedszkole
cioop
Witam mam pytanie,
chciałbym zrobić formularz do edycji treści wstawianej w szablon, ale mam problem z tym, zeby zapisać do pliku treść z pola tekstowego z formularza, w taki sposób, aby nie utracić kodowania (UTF) i znaków html.
  1. if($_POST['content'] && $_POST['sent']){
  2. $content = $_POST['content'];
  3. $fp = fopen($file, "r") or die("Couldn't open $file for writing!");
  4. $format = utf8_encode($content);
  5. file_put_contents($file, $format) or die("Couldn't write values to file!");
  6. fclose($fp);
  7. }

Próbowałem powyższego kodu, jak i htmlentities(), ale za każdym razem zapisują mi się krzaki albo w tagach html mam dodatkowe znaki '\', '/' i kod nie wyświetla się poprawnie.
Generalnie chciałbym osiagnąć taki efekt, jak pole edycji szablonu w Wordpressie.

Z góry dziekuję i pozdrawiam
Sephirus
  1. if($_POST['content'] && $_POST['sent']) {
  2. $content = $_POST['content'];
  3. // Poniższa linijka nie ma zupełnie sensu... nie potrzebnie otwierasz łącze do pliku i to w trybie odczytu a piszesz o zapisie...
  4. $fp = fopen($file, "r") or die("Couldn't open $file for writing!");
  5. // Czy to na pewno jest potrzebne?
  6. $format = utf8_encode($content);
  7. file_put_contents($file, $format) or die("Couldn't write values to file!");
  8. // Zbędne
  9. fclose($fp);
  10. }


Ja bym to widział tak:

  1. if($_POST['content'] && $_POST['sent']) {
  2. $content = $_POST['content'];
  3. is_writable($file) or die("Couldn't open $file for writing!");
  4. file_put_contents($file, $content) or die("Couldn't write values to file!");
  5. }
wNogachSpisz
Czy mogę wiedzieć - na sączące rany chrystusa - po co to wszystko?

Ustawiasz kodowanie formularza i po kłopocie, zero dodatkowego przetwarzania po stronie serwera.

  1. <form action="" method="post" accept-charset="utf-8">
-cioop-
ok, udało mi się zachować kodowanie znaków, ale jak zachować tagi html? W tej chwili to co mi się zapisuje wygląda tak:
  1. <div class=\"lead\">
Gość
htmlspecialchars
joseam
htmlspecialchars dekoduje znaczki, ale backslashe zostawia niestety w tych samych miejscach, gdzie miały znajdywać się nasze cudzysłowia (")
Jak zrobić, zeby podczas zapisywania do pliku z textarea zapisywało dokładnie to, co tam napisałem, ale jak ja napiszę tam:
$zmienna = "tekst";
to po zapisaniu do pliku zamienia mi na $zmienna = \"tekst\";
Jak pozbyć się tych ukośników?
Przeszukałem czeluści internetu i nikt nic o tym nie pisze, albo ja złe zapytanie w google używam sad.gif
jaslanin
masz włączone magic_quotes_gpc? jeżeli tak to je wyłącz

ewentualnie spróbuj przed zapisem: http://php.net/manual/en/function.stripslashes.php
joseam
Dzieki bardzo! Działa stripslashes smile.gif o to mi chodziło, tylko nie wiedziałem, jak to się nazywa, ale wiedziałem, że istnieje hehe
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.