Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odwrotność l2br()
Forum PHP.pl > Forum > PHP
Malvegil100
Wiec kiedy uzytkownik uzytkownik wpisuje tresc i uzywa ENTER wykorzystalem zmienna która zmienia to na <br />:

  1. <?php
  2. function nl2br2($string) {
  3. $string = str_replace(array("r\n", "r", "\n"), "<br />", $string);
  4. return $string;
  5. }
  6. ?>


Jedna teraz, kiedy uzytkownik chce zedytowac to co napisal wychodzi takie cos:

To jest temat do testów<br /><br />//Nie pisz glupot
(tresc przypadkowa)

Po prostu gubią się przerwy miedzy tekstami które zastępowane sa <br />. Jak teraz odwrócic ten proces żeby było to widoczne
tak jak wcześniej czyli:

To jest temat do testów

//Nie pisz glupot
marcio
Jest pozno wiec moze powiem jakas bombe ale chyba htmlspecialchars()
l0ud
Po pierwsze: nl2br powinno się używać tylko bezpośrednio przed wyświetleniem tego tekstu. Zapis do pliku/bazy powinien być w niezmienionej formie (i wtedy taki problem nie wystąpi).

Mimo wszystko, zawsze możesz zrobić tak:
  1. <?php
  2. $string = str_replace('<br />', "\n", $string);
  3. ?>
Malvegil100
Wszystko pięknie ale teraz mam następujący problem:

To jest temat testowy<br /><br />//Nie pisz głupot

Jeśli chciałbym to zedytować ponownie wychodzi takie coś:

To jest temat testowy<br /><br /><br />//Nie pisz głupot

I kolejny

To jest temat testowy<br /><br /><br /><br />//Nie pisz głupot.

Jak się tego pozbyć?
l0ud
Nie rozumiem. Po edycji dodają się te znaczniki? Czy w polu formularza edycji jest właściwa ilość linii, czy dodają się jakieś?
Malvegil100
Przy każdorazowej edycji dodają się znaczniki <br />.
l0ud
A czy użwasz nl2br() czy tej swojej nl2br2()? Jeżeli nl2br() to używaj tej drugiej.
Malvegil100
Ok pomogło, bardzo dziękuje za pomoc.
misiek172
ja używam takiej funkcji:

  1. <?php
  2. function nltobr($var, $xhtml = FALSE)
  3.    {
  4.        if($var){
  5.            if($xhtml == FALSE){
  6.                $array = array("r\n", "\nr", "\n", "r");
  7.                $var = str_replace($array, "<br>", $var);
  8.                return $var;
  9.            }
  10.            else{
  11.                $array = array("r\n", "\nr", "\n", "r");
  12.                $var = str_replace($array, "<br />", $var);
  13.                return $var;
  14.            }
  15.        }
  16.        else{
  17.            return FALSE;
  18.        }
  19.    }
  20. ?>
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.