Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciąganie fragmentu stringa
Forum PHP.pl > Forum > Gotowe rozwiązania
kamil_lk
Cześć.

Szukam jakiejś funkcji, sposobu na wyciągniecie stringa podanego w formularzu z całości tekstu plus do tego parę słów przed i po wystąpieniu podanego słowa.

Tekst:
Lorem Ipsum jest tekstem stosowanym jako przykładowy wypełniacz w przemyśle poligraficznym. Został po raz pierwszy użyty w XV w. przez nieznanego drukarza do wypełnienia tekstem próbnej książki. Pięć wieków później zaczął być używany przemyśle elektronicznym, pozostając praktycznie niezmienionym. Spopularyzował się w latach 60. XX w. wraz z publikacją arkuszy Letrasetu, zawierających fragmenty Lorem Ipsum, a ostatnio z zawierającym różne wersje Lorem Ipsum oprogramowaniem przeznaczonym do realizacji druków na komputerach osobistych, jak Aldus PageMaker

Fragment z formularza:
wypełniacz w przemyśle

Wynik:
... stosowany jako przykładowy wypełniacz w przemyśle poligraficznym. Został ...

Pozdrawiam, Kamil
Pawel_W
strpos + substring, za pomocą pierwszego pobierasz pozycję, odejmujesz od niej kilka znaków (ew. szukasz spacji kilka znaków przed, żeby ucinać całe słowa) i następnie przycinasz substringiem
kamil_lk
dzięki, ale jak nazwa działu wskazuje szukam gotowca smile.gif
!*!
Cytat(kamil_lk @ 16.12.2012, 14:01:11 ) *
dzięki, ale jak nazwa działu wskazuje szukam gotowca smile.gif


I podał Ci gotowca, w komentarzach masz przykład. Dorzuciłbym do tego str_word_count.
kamil_lk
Okej, coś poskrobałem dzisiaj i niby wszystko działa.
Jak by ktoś szukał to poniżej moje rozwiązanie.

  1. /*
  2. *
  3. * $string - zmienna przechowująca cały tekst
  4. * $szukany - tekst, którego szukamy ( w moim przypadku tekst pochodzący z formularza)
  5. * $przed, $po - ile znaków wyświetlić przed i po znaleźonej frazie
  6. *
  7. */
  8.  
  9. function utnij($string, $szukany, $przed = 60, $po = 60){
  10. $poczatek = strpos($string, $szukany);
  11. $koniec = $poczatek+strlen($szukany)-1;
  12. $start = $stop = '';
  13.  
  14. if($poczatek < $przed){
  15.  
  16. for($i = 0; $i < $poczatek; $i++) $start .= $string[$i];
  17. $uciety = $start.'<span style="background-color: #bde8ff;">'.$szukany.'</span>';
  18.  
  19. } else {
  20.  
  21. for($i = $poczatek-1; $i>=$poczatek-$przed-1; $i--) $start .= $string[$i];
  22. $uciety = '...'.strrev($start).'<span style="background-color: #bde8ff;">'.$szukany.'</span>';
  23.  
  24. }
  25.  
  26. if($koniec+$po < strlen($string)-$przed-strlen($szukany)){
  27.  
  28. for($i = $koniec+1; $i<$koniec+$po+1; $i++) $stop .= $string[$i];
  29. $uciety = $uciety.$stop.'...';
  30.  
  31. } else {
  32.  
  33. for($i = $koniec+1; $i < strlen($string); $i++) $stop .= $string[$i];
  34. $uciety = $uciety.$stop;
  35.  
  36. }
  37.  
  38. return $uciety;
  39.  
  40. }
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.