Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Wczytywanie od pełnego wyrazu
--Kamilos--
post 28.11.2011, 01:24:00
Post #1





Goście







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
Go to the top of the page
+Quote Post
szmerak
post 28.11.2011, 02:02:04
Post #2





Grupa: Zarejestrowani
Postów: 286
Pomógł: 12
Dołączył: 23.11.2006
Skąd: WL

Ostrzeżenie: (0%)
-----


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

Ten post edytował szmerak 28.11.2011, 05:25:19
Go to the top of the page
+Quote Post
--Kamilos--
post 28.11.2011, 14:06:19
Post #3





Goście







Dzięki mistrzu, pięknie działa, tak jak chciałem smile.gif
Go to the top of the page
+Quote Post
aachi
post 28.11.2011, 14:54:05
Post #4





Grupa: Zarejestrowani
Postów: 54
Pomógł: 12
Dołączył: 4.08.2007

Ostrzeżenie: (0%)
-----


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.

Ten post edytował aachi 28.11.2011, 14:55:37
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.06.2025 - 21:48