Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrót rekordu pobranego z bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
Muphet
Witam.

Tworzę system CMS pod stronę i zatrzymałem się w momencie skrócenia wyciągniętego z bazy danych rekordu do wyznaczonej wartości znaków. Chodzi o to, by tzw. 'skrócony opis' wyświetlał tylko oznaczoną ilość znaków i urywał resztę dodając np. wielokropek.

Korzystam z pętli do wyświetlania newsów na stronie głównej. Zmienna $text to treść artykułu.
  1. $view_text = '';
  2. if (strlen($text) > 50) {
  3. $view_text = substr($text, 0, 50);
  4. $temp = strrpos($view_text, ' ');
  5. $view_text = substr($text, 0, $temp) . '...';
  6. }else{
  7. $view_text = $text;
  8. }

Stworzyłem funkcję ograniczającą pobrany rekord do 50 znaków, lecz bez żadnych błędów rekord nie zostaje skrócony. W czym tkwi problem?

----
/wybaczcie - temat do usunięcia. Sam już doszedłem do swojego błędu.
piotr.pasich
Osobiście preferuję rozbicie na słowa i przelecenie przez nie foreachem (po to jest )

  1. function cutString($string, $lenght=200)
  2. {
  3. $stringArray = explode (' ',$string);
  4. $outputString = '';
  5.  
  6. if ( $length <= strlen($string)){
  7. return substr($string,0,$length).'...';
  8. }
  9.  
  10. foreach ($stringArray AS $word){
  11. if ( $length > strlen($outputString)+strlen($word)){
  12. $outputString .= ' ' . $word;
  13. }
  14. return substr($outputString,1).'...';
  15. }
  16.  
  17. }



Dorzuciłbym jeszcze obsługę znaków niealfanumerycznych np. kropki (.) lub przecinka (,), żeby string nie kończył się:

  1. Lorem ipsum dolor sit apet,...
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.