Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Wczytywanie od pełnego wyrazu
Forum PHP.pl > Forum > Przedszkole
-Kamilos-
Witam, mam pewien problemik z pewnym stringiem.
Mam taki oto kod:
  1. substr($record['dane'], 0, strpos($record['dane'],' ',200))


Skrypt działa bardzo dobrze, ucina po 200 znakach, z czego po pełnym wyrazie. Problem natomiast jest z tym kodem:

  1. substr($record['dane'], 200, strpos($record['dane'],' ',400))


Skrypt wczytuje od 200 znaku, tylko, że czasem jest to fragment wyrazu, a ja chciałbym, żeby wczytywało od pełnego wyrazu, ale coś mi to nie wychodzi. Ktoś pomoże?
Druga sprawa, to jak zrobić, żeby wczytywało od 200 znaku do końca danych, a nie 400 znaku?

Z góry dzięki
szmerak
Dobra napisałem ci funkcje do tego tongue.gif Może nie jest profesjonalnie zrobione ale jedyne co na szybko przyszło mi do głowy smile.gif

Może ona trochę wyjechać poza 400 zależnie od długości ostatniego wyrazu, ale inaczej się nie da sie zrobić smile.gif
więc jak potrzebujesz wiedzieć gdzie skończył to musisz troche pokombinować... A podpowiedź to jest "zwróć tablice"

  1. function wytnij_tekst($tekst, $od, $do)
  2. { if(strlen($tekst)<$do){ return $tekst; }
  3. $wyrazy = explode(" ", $tekst);
  4. $pob = $do - $od;
  5. for($x=0;$x<sizeof($wyrazy);$x++)
  6. { if($od == 0)
  7. { $ciag = substr($tekst, 0, strpos($tekst,' ',$do));
  8. }else{
  9. if(strlen($tmp)>=$od)
  10. { if(strlen($ciag)<$pob)
  11. { $ciag .= $wyrazy[$x]." "; }
  12. else{ break; }
  13. }else{ $tmp .= $wyrazy[$x]." "; }
  14. }
  15. } return $ciag;
  16. }
  17. echo wytnij_tekst($record[dane], 250, 400);


Cytat
Druga sprawa, to jak zrobić, żeby wczytywało od 200 znaku do końca danych, a nie 400 znaku?

  1. echo wytnij_tekst($record[dane], 250, strlen($record[dane]));

Pozdrawiam
-Kamilos-
Dzięki mistrzu, pięknie działa, tak jak chciałem smile.gif
aachi
Po co w drugiej linii na sztywno ustawiasz 200 znak, skoro pierwszą linię obliczasz do pierwszej spacji. Zamiast 200 też obliczaj od pierwszej spacji.
  1. substr($record['dane'], 0, strpos($record['dane'],' ',200))
  2. substr($record['dane'], strpos($record['dane'],' ',200), strpos($record['dane'],' ',400));


By określić długość stringu używasz strlen jak szmerak napisał.

A by to było bardziej optymalne zamiast wiele razy szukać tych spacji to zapisuj wynik szukania w jakiejś zmiennej i jej używaj.
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.