Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] nl2br daje <br> zamiast <br />
Forum PHP.pl > Forum > Przedszkole
Kyle
Albo ja o czymś nie wiem, albo... nie wiem winksmiley.jpg
Kod
$BrainMsg[] = array('date' => $time_date, 'msg' => nl2br($query_show['msg']));

Daje mi w kodzie <br>, a nie <br />...
Co dziwniejsze, myślałem, ze to błąd u mnie z PHP jakiś.
Więc znalazłem w manualu funkcję do tego, zamieniała nl na br, ale w kodzie też było <br>, nawet jeśli w funkcji było <br /> :|
Gdzie mi wycina " /"?
Zyx
Albo później używasz jakiegoś kretyńskiego kodu, albo masz muzealną wersję PHP z ery krzemu łupanego. Jeśli tak jest, to WSTYD.
Kyle
Uznam, że powyższej odpowiedzi nie było, bo WSTYD %-)

Kod z innej aplikacji jaką napisałem, nie robi <br />, ani u mnie na localhoście z PHP 5.2.8, ani na netlooku...
Kod
$step1_show['oferta'] = nl2br($step1_show['oferta']);

Dalej jest
Kod
echo "coś tam coś tam $step1_show['oferta']";


W tym kodzie, który podałem (jest ze strony, którą piszę teraz) dalej jest przypisywane do zmiennej smarty i nic więcej z tym nierobione.
ziqzaq
Nie wiem czego dokładnie próbowałeś (oprócz funkcji z komentarzy w manualu).
1) Próbowałeś jakiegoś czystego skryptu używającego nl2br (sam ciąg znaków + nl2br + echo)?
U mnie poniższy kod daje prawidłowy wynik:
  1. <?php
  2. $txt = "Jakas linia\nNowa linia\nJeszcze jedna";
  3. echo nl2br($txt);
  4. ?>

2) Możesz też spróbować przypisać ręcznie ciąg znaków zawierajcy <br /> do zmiennej Smarty i zobacz czy to nie wina sys. szablonów. Możliwe, że Smarty jakoś escapeuje ci kod.

Jeśli oba sposoby dają poprawne wyniki (czyli to nie wina Smarty ani PHP) to niestety najprawdopodobniej gdzieś kichę odwaliłeś i musisz szukać winksmiley.jpg
Kyle
To nie wina Smarty, na stronie bez Smarty też tak mam.
Ten kod, który podałeś daje mi <br />
Czyli to też nie php, a coś co ja robię.

  1. <?php
  2. $query = "SELECT date,msg FROM brainbox ORDER BY id DESC LIMIT 3";
  3.            $query_make = mysqli_query($link, $query);
  4.            while($query_show = mysqli_fetch_assoc($query_make))
  5.                {
  6.                    $BrainMsg[] = array('date' => show_me_time($query_show['date'], 'brainboxout'), 'msg' => nl2br($query_show['msg']));
  7.                }
  8.            
  9.            $smarty -> assign('BrainMsg', $BrainMsg);
  10. ?>


Tak wygląda cały ten fragment kodu od pobrania do przypisania, coś tu źle jest?
ziqzaq
Kurcze sorki, ale jedyne co mi przychodzi do głowy to sprawdzenie (echo) tego $query_show['msg'].
Może tam już są <br> (zapisane w bazie) i dlatego funkcja nl2br nie działa?
Kyle
W bazie nie ma br. Jest sam tekst tak jak idzie z formularza.
Teraz zamieniłem to co podałeś wcześniej na wypisywanie zmiennej tablicowej, bo myślałem, że może w tablicach się coś pierdzieli, ale też dało <br />
Już też nie mam żadnego pomysłu w którym miejscu to jest ucinane :/
Szukałem nawet w bugtrack php, nie było niczego takiego.
ziqzaq
Jedyne co mogę polecić to metoda eliminacji.
Jeśli masz php > 4.0.1 to nie ma bata, coś ci siedzi w kodzie.
Wywalaj po kolei niepotrzebne elementy, sprawdź na każdym etapie wykonywania skryptu co dostajesz.
Czyli po odebraniu danych z bazy zrób echo (print_r) tych danych, po użyciu jakichś funkcji to samo, po przypisaniu do Smarty też. Może wrzuciłeś gdzieś jakiś kod i o nim zapomniałeś?
Sprawdź wszystko po x razy bo takie błędy często są trudne do zauważenia.
Życze powodzenia bo ja już nie mam pomysłów. winksmiley.jpg

Edit:
@dół: Spoko, czyli zwykłe przeoczenie - zdarza się. winksmiley.jpg
Kyle
Ehh.. dobra, działa...
Właściwie to działało cały czas... dry.gif

Odpal ten kod, który podawałeś mi wyżej, ale koniecznie w firefox.
Weź "Pokaż źródło strony" - jest <br />.
Teraz zaznacz ten tekst i weź "Pokaż źródło zaznaczenia".
Mi brak słów... sciana.gif
tommy4
Pokaż źródło strony, a pokaż źródło zaznaczenia to dwie różne rzeczy, bo 1 pokazuje kod źródłowy jaki firefox otrzymał od serwera, a 2 pokazuje źródło DOM dokumentu, zmodyfikowane (np. przez AJAX) źródło zaznaczenia. Formatowanie jest także tam inne użyte.
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.