Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Jak 'złamać' linię aby nie zniknęły spacje
sadistic_son
post 9.09.2009, 16:21:20
Post #1





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Mam pewnego diva o ustalonej szerokości do którego userzy dorzucają informacje. Chciałem się zabezpieczyć przed tym aby nie rozwaliło mi konstrukcji diva jeśli ktoś wrzuci za długie słowo. Jak wiadomo string podzieli się na kolejne linijki wg spacji, czyli po kolejnych słowach. Ale co jeśli ktoś wrzuci np tekst "TojestJedenDlugiWyrazKtoryPOPSUJEkontrukcjęDIVa".
Próbowałem to rozwiązać w ten sposób:
  1. $string=wordwrap($string,1,"\n",true);
I wszystko pięknie oprócz tego że to połyka spacje. Taki string wyjściowy nie ma spacji między wyrazami nawet jeśli uprzednio każdą spację zastąpię np 2 lub 3 spacjami.
Macie pomysł jak to rozwiązać?

Ten post edytował sadistic_son 9.09.2009, 16:22:34


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
drake88
post 9.09.2009, 16:27:25
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 15
Dołączył: 22.03.2009
Skąd: Bytów

Ostrzeżenie: (0%)
-----


Jeśli dobrze zrozumiałem, chcesz zrobić łamanie linii, czyli funkcja która zamienia wszystkie znaki \n na <br />

  1. <?
  2. echo nl2br($dane);
  3. ?>





--------------------
Go to the top of the page
+Quote Post
sadistic_son
post 9.09.2009, 16:43:59
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


nie nie, o to mi nie chodzi.
Moze inaczej to wyjasnie. Zalozmy ze mam string: WWWWYYYYYRRRRRAAAAZZZZ spacja wyraz2 wyraz3 KONIEEEEEEEC.
Teraz jesli go wyswietle w moim divie to pierwsze slowo (WWWYYY...) spowoduje ze w divie pojawia sie paski przewijania ktorych chce uniknac. Jednoczesnie tez nie chce dawac wlasciwosci overflow:hidden. Chce aby ten string zostal podzielony tak aby slowa ktore sa za dlugie byly lamane. Ale metoda ktora przedstawilem wyzej powoduje tez kompletny zanik spacji przez co koncowy string, nie wazne czy sklada sie z za dlugich slow czy z tych ok, jest wyswietlany jako jedna calosc (choc nastepuje przejscie do nowej linii przy koncu diva).

Ten post edytował sadistic_son 9.09.2009, 16:46:01


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Spawnm
post 9.09.2009, 16:48:16
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




http://pl2.php.net/wordwrap
Go to the top of the page
+Quote Post
drake88
post 9.09.2009, 16:48:20
Post #5





Grupa: Zarejestrowani
Postów: 283
Pomógł: 15
Dołączył: 22.03.2009
Skąd: Bytów

Ostrzeżenie: (0%)
-----


Paski przewijania powiadasz, szerokość więc ustaw na określony rozmiar a wysokość na height:auto; a z kodem:

Cytat
$string=wordwrap($string,1," \n",true);


Spróbuj z tą spacją przed \n

Ten post edytował vonEverest 9.09.2009, 16:48:35


--------------------
Go to the top of the page
+Quote Post
sadistic_son
post 9.09.2009, 16:52:55
Post #6





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 9.09.2009, 17:48:16 ) *
No bardzo dziękuję za wskazanie funkcji którą mam użytą w pierwszym poście, i o której mówiłem, że nie daje porządanego efektu.

vonEverest rzecz w tym ze div ma na stale ustawiona szerokosc i wysokosc. A wcisniecie spacji przed "\n" niestety nie daje zadnego efektu.

Ten post edytował sadistic_son 9.09.2009, 16:58:24


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Spawnm
post 9.09.2009, 17:01:47
Post #7





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




zobacz parametry tej funkcji, chcesz łamać po każdym znaku, daj np. $string=wordwrap($z,8,"\n",true);
8 znakowy wyraz się zmieści pewnie w diwie więc go nie rozwali większe będą łamane
Go to the top of the page
+Quote Post
sadistic_son
post 9.09.2009, 17:20:30
Post #8





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Tak, ok. Ale ciezko przewidziec jaki sie zmiesci a jaki nie poniewaz litery maja rozne szerokosci: 8 znaków: "WWWWWWWW" i drugie 8 znaków: "iiiiiiii" a szerokości różne. Ale już ajkoś wymóżdżyłem jak to rozwiązać. Otóż:
  1. $string='Wyraz1 Wyraz2 WWWYYYRRRAAAZZZ3';
  2. //najpierw zasptepujemy kazda spacje stringiem &nbsp;
  3. $string=str_replace(" ","&nbsp;",$string);
  4. //nastepnie lamiemy string co linijke, wciskajac spacje co kazda litere
  5. $string=wordwrap($string,1," ",true);
  6. //teraz zamiast spacji (ktorych w naszym stringu sa 2) pojawia sie & n b s p (ze spacjami miedzy &, n, b,s i p)
  7. //wiec trzeba & n b s p ; zastapic na normalne &nbsp; bez spacji
  8. $string=str_replace("& n b s p ;","&nbsp;",$string);
I to daje zamierzony efekt. Ale dzieki za zainteresowanie. Pozdrawiam:)


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:07