Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Echo oraz minimalna liczba znaków
NorQ
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Witam, pracuję nad systemem newsów który już prawie skończyłem. I mam jeden problem.

Jak do echo

  1. echo '<i>'.stripslashes($row['tresc']).'</i>';


dodać ograniczoną liczbę znaków, po której przekroczeniu się pojawia tylko '...' ?

Np. 9 znaków

LoremIpsu...

Proszę o przykład z moim kodem.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




mb_strlen + mb_substr. Pierwszą sprawdzasz czy ciąg jest dłuższy niż $max, jeśli tak to wycinasz z niego $max znaków, dostawiasz kropeczki i tyle.
Go to the top of the page
+Quote Post
NorQ
post
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Mogę prosić o przykład ? Bo jest to dla mnie nowa rzecz a lepiej rozumuję na przykładach...
Go to the top of the page
+Quote Post
!*!
post
Post #4





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Przykład masz w manualu. dodajesz do niego tylko "..." na końcu.
Go to the top of the page
+Quote Post
NorQ
post
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Znalazłem w sieci kod.

  1. <?
  2. $row['text'] = '1251361614761474714742171474741724717';
  3. $limit['limit'] = 30; // dopuszczalna ilosc liter
  4.  
  5. $row['text'] = substr ($row['text'], 0, $limit['limit']); // obcinanie
  6.  
  7. echo $row['text'];
  8. echo '...';
  9. ?>


Tylko co zmienić żeby nie wyświetlało '...' jeżeli ograniczenie liter nie zostanie przekroczone ?
Go to the top of the page
+Quote Post
!*!
post
Post #6





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Użyj IF. Jesteś prawie rok na forum i nie masz żadnej wiedzy PHP? Przeczytaj jakiś kurs.
Go to the top of the page
+Quote Post
Adi32
post
Post #7





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


  1. if (strlen($text) > $limit) {
  2. // obcinanie i dodawanie kropek
  3. }


Ale to rozwiązanie jest dość stare. Teraz robi sie do tego funkcję to raz a dwa nie powinno się ucinać zdania w połowie słowa.
Go to the top of the page
+Quote Post
!*!
post
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Adi32 - mb_strlen jak już (IMG:style_emoticons/default/wink.gif) Liczy poprawnie, strlen ąśćó policzy jako 8 znaków.
Go to the top of the page
+Quote Post
NorQ
post
Post #9





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Proszę o przykład połączenia IF z kodem bo sam nie potrafię połączyć...
Go to the top of the page
+Quote Post
Adi32
post
Post #10





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Cytat(!*! @ 27.06.2012, 10:50:31 ) *
Adi32 - mb_strlen jak już ;) Liczy poprawnie, strlen ąśćó policzy jako 8 znaków.

No fakt, wziąłem i się nie skupiłem :/

@NorQ
Jak nie będziesz próbował sam to się nie nauczysz. Sprawa jest na prawdę prosta.

Ten post edytował Adi32 27.06.2012, 09:54:46
Go to the top of the page
+Quote Post
!*!
post
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(NorQ @ 27.06.2012, 10:52:32 ) *
Proszę o przykład połączenia IF z kodem bo sam nie potrafię połączyć...


Proszę
Go to the top of the page
+Quote Post
NorQ
post
Post #12





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


  1. <?php
  2. $row['text'] = '1251361614761474714742171474741724717';
  3. $limit['limit'] = 30; // dopuszczalna ilosc liter
  4. if (strlen($text) > $limit) {
  5. {
  6. $row['text'] = substr ($row['text'], 0, $limit['limit']); // obcinanie
  7. echo $row['text'];
  8. echo '...';
  9. }
  10. else
  11. {
  12. echo $row['text'];
  13. }
  14. ?>


Co w tym robię źle?
Go to the top of the page
+Quote Post
!*!
post
Post #13





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Masz o jedną klamrę{ za dużo w 5 linijce. Czemu Ty to zapisujesz w formie tablic?

Ten post edytował !*! 27.06.2012, 10:01:51
Go to the top of the page
+Quote Post
NorQ
post
Post #14





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


no tak... jak mogłem tego nie zauważyć... -.-

dodatkowo, pomyliłem kolejność w if.

Teraz mi się udało:
  1. <?php
  2. $row['text'] = '1251361614761474714742171474741724717';
  3. $limit['limit'] = 10; // dopuszczalna ilosc liter
  4. if (strlen($text) > $limit) {
  5. echo $row['text'];
  6. }
  7. else
  8. {
  9. $row['text'] = substr ($row['text'], 0, $limit['limit']); // obcinanie
  10. echo $row['text'];
  11. echo '...';
  12. }
  13. ?>


Dziękuję wam za pomoc. (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
Adi32
post
Post #15





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Twój kod wciąż nie będzie działać...

  1. $text = '1251361614761474714742171474741724717';
  2. $limit = 10; // dopuszczalna ilosc liter
  3. if (mb_strlen($text) > $limit) {
  4. $text = substr ($text, 0, $limit).'...'; // obcinanie
  5. }
  6. echo $text;


Ten post edytował Adi32 27.06.2012, 10:18:51
Go to the top of the page
+Quote Post
NorQ
post
Post #16





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 15.07.2011

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


Mi działa, ale skoro przedstawiasz lepszą wersję to nadpiszę ją...
Go to the top of the page
+Quote Post
!*!
post
Post #17





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Adi32 niby dlaczego nie? Zadziała dla liczb. Ale nie dla tekstu ze znakami diakrytycznymi, trzeba wpisać kodowanie jako 2 parametr.

Ten post edytował !*! 27.06.2012, 10:19:42
Go to the top of the page
+Quote Post
Adi32
post
Post #18





Grupa: Zarejestrowani
Postów: 348
Pomógł: 26
Dołączył: 8.10.2008
Skąd: Lublin

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


Cytat(!*! @ 27.06.2012, 11:18:59 ) *
Adi32 niby dlaczego nie?



Chyba żartujesz...
Przyjrzyj się:

  1. $row['text'] = '1251361614761474714742171474741724717';
  2. $limit['limit'] = 10; // dopuszczalna ilosc liter
  3. if (strlen($text) > $limit) {
  4. echo $row['text'];
  5. }


Strlen() operuje na innych zmiennych...
Edit, to faktycznie może działać jak na serwerze jest włączone przertarzanie zmiennych $var[nvar] na $nvar... Ale i tak nie powinno się tego stosować.

Ten post edytował Adi32 27.06.2012, 10:21:32
Go to the top of the page
+Quote Post
!*!
post
Post #19





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat
Chyba żartujesz...
Przyjrzyj się:


Boś źle napisał wcześniej (IMG:style_emoticons/default/wink.gif) fakt, ten nie będzie, ale skoro autorowi działa, więc nie ma to znaczenia.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 5.10.2025 - 07:22