![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 25.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam taki, dość kłopotliwy, ale w sumie drobny problem: wysyłam do mysql'a tekst z pola formularza textarea. Tekst ten jest podzielony na linie (przez wciśnięcie ENTER), a przed wysłaniem przepuszczam go przez addslashes(). Gdy potem odczytuję ten tekst z mysql'a, przepuszczam przez stripslashes(), to wyświetla mi się on na ekranie jednym ciągiem, bez końców linii, no chyba że wpakuję go w znacznik , ale wtedy akapity z pola textarea, robią się pojedynczymi liniami i rozciągają mi tabele psując calą stronę. Jak zachowac znaki końca linii wysyłając tekst do mysqla (rekordu typu text), ale nie używając 'pre'? Pozdrawiam, |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
Sproboj tego przed wyswietleniem tekstu (bez pre):
albo: nl2br()" title="Zobacz w manualu PHP" target="_manual |
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przepuść swój text przed wrzuceniem do bazy funkcją nl2br() zamieni ona znaki nowej linii na html'owskie <br>....
oczywiście lepiej zrobić tak:
edit: Seth.. wyprzedziłeś mnie ![]() Ten post edytował Tiraeth 2.11.2004, 19:10:45 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 335 Pomógł: 6 Dołączył: 7.03.2002 Ostrzeżenie: (0%) ![]() ![]() |
@Tiraeth:
![]() btw: Pierwsza wartosc w str_replace jest zla. Dales \r\n w ' ', co spowoduje, ze nie zostanie to sparsowane i uznane za znacznik nowej lini. Swoja droga \r\n to znak nowej lini w Windowsie, w Linuxie jest tylko \n |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
1. Przy wprowadzaniu danych do bazy uzyj addslashes().
2. Przy odczytywaniu danych z bazy NIE uzywaj stripslashes() -- baza zwroci ci dane bez nadmiarowych slashy wiec ich nie musisz wycinac ( jesli to zrobisz to zamieni ci "\r\n" --> "rn"). 3. potem uzyj funkcji nl2br() (zamieni nowe linie na <br />) -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 25.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Bardzo dziękuję - dokładnie o to mi chodziło
Jednak, jak już dołałem przetestować, o ile właściwie po użyciu funkcji nl2br(), nie trzeba nic zmieniać by tekst prawidłowo się wyświetlił na stronie www, o tyle, wrzucając go jako wartości zmiennej w polu textarea, dobrze jest użyć:
wtedy tekst się wyświetla prawidłowo, a i nie przeszkadzają irytujące znaczki br, które w textarea nie znikają. No chyba że jest jeszcze inna funkcja która potrafi zrobic coś takiego, by br zniknęły przed wyświetleniem. Pozdrawiam, |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 743 Pomógł: 0 Dołączył: 11.11.2003 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
a może po prostu przy wczytywaniu do TEXTAREA nie dawać nl2br(); i wtedy nie bedzie trzeba go usuwać ?
Po co coś dodawać a za chwilę usuwać ? nie lepiej tego nie dodawać ? Ten post edytował Kuziu 3.11.2004, 11:30:32 -------------------- Słońce zachodzi ... kolejna noc nadchodzi ...
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 25.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Racja, ale ten tekst z bazy jest wczytywany w dwa miejsca: jedno to zwykły kod html na stronie, a drugie to pole textarea w panelu administracyjnym. W pierwszym przypadku muszą być BR, wiec tak czy siak mysze je dodać podczas zapisu tekstu do bazy. Gdy je wczytuję do panelu administracyjnego, to są mi one tymczasowo niepotrzebne i dlatego je usówam. Może istnieją bardziej eleganckie sposoby, ale ten jest chyba najprostszy.
Pozdrawiam, |
|
|
![]()
Post
#9
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cytat W pierwszym przypadku muszą być BR, wiec tak czy siak mysze je dodać podczas zapisu tekstu do bazy. Gdy je wczytuję do panelu administracyjnego, to są mi one tymczasowo niepotrzebne i dlatego je usówam. Czemu nie prosciej: Zapisujesz w bazie ze znakami konca wiersza (bez uzywania nl2br()) Odczytujesz dane z bazy Jesli potrzebujesz (zamieniasz dane na html) to uzyj funkcji nl2bt(), jesli nie (panel adm. i textarea) - nie uzywaj jej. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 25.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Ja jednak pozostanę przy swoim sposobie, choćby dlatego że ten tekst jest znacznie częściej odczytywany na sronie niż w panelu administracyjnym, więc jeżeli zapisze go w bazie razem ze znacznikami BR, to potem nie musze go przetwarzać dodatkową funkcją nl2br() dodającą te znaczki , za każdym razem gdy oglądający wejdzie na stronę.
Panel jest używany znacznie żadziej, dlatego wydajniej jest zastosować str_replace() przy nim i przetwarzać tekst właśnie w tym miejscu. Ilość dodatkowych danych w bazie nie jest wiele większa, a zbyt częst użycie niepotrzenej funkcji to przeciez czas procka który wypada oszczędzać - takie moje postfortranowskie zoboczenie ![]() Pozdrawiam, |
|
|
![]() ![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 26.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
no a ja mam problemik, gdyż tworzy skrypt mi przerwy, których nie chcę, oto kod:
gdzie zamienia znaczniki [b] na <b> itd. Tylko tworzy mi przerwy jakbym dawał br na końcu lini pogrubianej czy podkreślanej. Jak zrobić, żeby nie robił przerw ze zdania w jednej lini na 3? nie moge użyć nl2br gdyż używa to inna funkcja na mojej stronie i się te dwie funkcje gryzą. Dzięki za pomoc |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 23:05 |