Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z trim()
Forum PHP.pl > Forum > Przedszkole
VegetaSSJ
Witam!
Jako że zapoczątkuje dopiero z php postanowiłem sobie napisać księgę gości, nie używałem jeszcze sqla więc wszystkie wpisy zaplanowałem że będą trzymane w jednym pliku na dysku. Napisałem sobie odpowiednią klasę i mam problem. Do wpisywania komentarzy użyłem pola textarea i wysyłania metodą post. Jako że przyjąłem że każdy komentarz będzie zajmował jedną linię w pliku problem się pojawia kiedy wpiszę w textarea jakiś tekst z użyciem enteru tzn kilka razy przejdę do nowej linii. Wtedy cały komentarz zapisuje w pliku w kilu liniach. Próbowałem przed zapisem potraktować string w którym mam surowy komentarz funkcją trim() która ponoć usuwa znaki załamania wiersza '\n' ale nie skutkuje. Próbowałem też str_replace('\n', ' ', $ciagwejsciowy) ale bez skutku. Pomoże ktoś ?
siemakuba
Hmm, trim" title="Zobacz w manualu php" target="_manual usuwa białe znaki ale tylko z początku i końca całego stringu. Z pewnością nie usuwa znaków nowej linii.

Ta konstrukcja zadziała:
  1. <?php
  2. // nie tak
  3. str_replace('n', ' ', $ciagwejsciowy);
  4. //ale tak (cudzysłów!)
  5. str_replace("n", ' ', $ciagwejsciowy);
  6. ?>


Tyle, że skoro ktoś wklepał w polu textarea znak nowej linii, to pewnie miał ku temu powód. Więc czemu nie użyć nl2br" title="Zobacz w manualu php" target="_manual? Problem z nowymi liniami w pliku rozwiązany, formatowanie poprawne.

pozdr.
Sedziwoj
Lub też w jednej linijce:
  1. <?php
  2. str_replace(array("n","r"),'',$strings)
  3. ?>

tylko trzeba pamiętać, że nl2br() nie usuwa znaku nowej linii on jedynie dodaje <br> przed nią.

Co do znaku końca linii trzeba pamiętać, że Linux to tylko \n Windows to \r\n a mac \r...
siemakuba
@Sedziwoj, masz rację co do nl2br" title="Zobacz w manualu php" target="_manual.
Co do nowej linii, zamiast zastanawiania się, czy Win, czy Mac czy Unix, najlepiej chyba użyć stałej PHP_EOL ;)

pozdr.
Sedziwoj
Fajna stała biggrin.gif można by było się spodziewać, że jest skoro jest nl2br(), więc kod by wyglądał:
  1. <?php
  2. $strings=str_replace(PHP_EOL ,'<br />',$strings);
  3. ?>
VegetaSSJ
ok koledzy dzięki za podjęcie tematu. Zadziałało str_replace(array("\n","\r"), ' ', $string) . Ciekawi mnie jednak dlaczego nie działa funkcja trim() wszak pisze że wycina "\n" i "\r".
Sedziwoj
Działa tak jak pisze, wycina tylko że na końcu i na początku.
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.