Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skracanie zdań
Forum PHP.pl > Forum > PHP
flonder
Witam, mma następujący problem:
chcę utworzyć skrypt, który przytnie zdanie do np. 20 znaków, ale nie chcę, żeby przycinał je w polowie wyrazu, tylko usuwał ostatnie słowo, które się nie mieści... dry.gif
potrzebuję tego do wyświetlania "Na Forum" i nie chcę, żeby zajmowalo mi 8 llinijek winksmiley.jpg
pawel_k
rozbijasz funkcja explode" title="Zobacz w manualu php" target="_manual ciag znakow a poniej pobieraz w petli tyle slow ile Ci potrzeba (w petli po kazdym elemencie tablicy), przyda Ci sie jeszcze funkcja strlen" title="Zobacz w manualu php" target="_manual
flonder
proszę wytlumacz trochę prościej winksmiley.jpg jestem początkujący rolleyes.gif
albo dokladniej....
Dobra wiem, że powinienem się z tym zgłosić do działu początkujący- nie musisz tlumaczyc... winksmiley.jpg
pawel_k
  1. <?php
  2.  
  3. $tab = explode(" ", $tekst);
  4. $str = "";
  5. for($i = 0; $i < sizeof($tab); $i++) {
  6. if(strlen($str) > 20) {
  7. return;
  8. }
  9. $str .= $tab[$i];
  10. }
  11. ?>
pisane z glowy, mniej wiecej cos takiego...
flonder
Dzięki to załatwia sprawę Rkingsmiley.png
a jakbym chcial bez pętli?
yavaho
Obcinasz zdanie do powiedzmy 30 znakow
Potem wkladasz to do tablicy za pomoca funkcji explode (jak w powyzszych postach)
Usuwasz ostatni rekord z tablicy array_pop" title="Zobacz w manualu php" target="_manual
flonder
ale jak wykonać samo obcięcie?
nie wiem czy zadziala cos takiego:

  1. <?php
  2. if ( strlen($tekst) > 20 ) {
  3. strlen($text) = 20;
  4. }
  5. ?>
crash
Na forum było wiele razy o tym, oto jedna z funkcji:
  1. <?php
  2. function short( $txt, $len = 100, $add = '...' )
  3. {
  4.  if( strlen( $part = substr( $txt, 0, $len + 1 - strlen( $add ) ) ) < strlen( $txt ) + 1 and strlen( $txt ) > 0 )
  5.  {
  6. $txt = preg_replace( '/(s|,|.)*S*$/ ', '', $part ) . $add;
  7.  }
  8.  
  9.  return $txt;
  10. }
  11. ?>
Sabistik
a nie wystarczy:
  1. <?php
  2.  
  3. echo substr( $sString, 0, strpos($sString, ' ', 100) );
  4.  
  5. ?>

?
flonder
Pomysł Sabistika mi się najbardziej spodobał....
Krótki i prosty...
Mam ostatnie pytanie- jak to wszystko połączyć z tablicą wielowymiarową?
np
Kod
[0]
  [0] - "Text"
  [1] - "inny text"
  [2] - "tekst inszy"
[1]
  [0] - "user1"
  [1] - "user2"
  [2] - "user3"
crash
A jak to niby chciałbyś połączyć?
flonder
moze cos w tym stylu:
  1. <?php
  2.  
  3. $userzy = array(
  4. 'Jan' ,
  5. 'mark23' ,
  6. 'ted_on'
  7. );
  8.  
  9. $tekst = array (
  10. 'Blabla bla, coś piszę nie wiem co',
  11. 'Drugi tekst na przyklad fragment z forum',
  12. 'trzeci, no sam nie wiem, jakis inny'
  13. );
  14.  
  15. for ($i=1; $i <= count($userzy);  $i++) {
  16. echo substr( $tekst[$i], 0, strpos($tekst, ' ', 20) );
  17. echo "napisał: $userzy[$i]"; }
  18.  
  19.  
  20. ?>
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.