Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Echo oraz minimalna liczba znaków
Forum PHP.pl > Forum > Przedszkole
NorQ
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.
phpion
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.
NorQ
Mogę prosić o przykład ? Bo jest to dla mnie nowa rzecz a lepiej rozumuję na przykładach...
!*!
Przykład masz w manualu. dodajesz do niego tylko "..." na końcu.
NorQ
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 ?
!*!
Użyj IF. Jesteś prawie rok na forum i nie masz żadnej wiedzy PHP? Przeczytaj jakiś kurs.
Adi32
  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.
!*!
Adi32 - mb_strlen jak już wink.gif Liczy poprawnie, strlen ąśćó policzy jako 8 znaków.
NorQ
Proszę o przykład połączenia IF z kodem bo sam nie potrafię połączyć...
Adi32
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.
!*!
Cytat(NorQ @ 27.06.2012, 10:52:32 ) *
Proszę o przykład połączenia IF z kodem bo sam nie potrafię połączyć...


Proszę
NorQ
  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?
!*!
Masz o jedną klamrę{ za dużo w 5 linijce. Czemu Ty to zapisujesz w formie tablic?
NorQ
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. wink.gif
Adi32
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;
NorQ
Mi działa, ale skoro przedstawiasz lepszą wersję to nadpiszę ją...
!*!
Adi32 niby dlaczego nie? Zadziała dla liczb. Ale nie dla tekstu ze znakami diakrytycznymi, trzeba wpisać kodowanie jako 2 parametr.
Adi32
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ć.
!*!
Cytat
Chyba żartujesz...
Przyjrzyj się:


Boś źle napisał wcześniej wink.gif fakt, ten nie będzie, ale skoro autorowi działa, więc nie ma to znaczenia.
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.