Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Wczytywanie od pełnego wyrazu
--Kamilos--
post
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
 
Start new topic
Odpowiedzi (1 - 3)
szmerak
post
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 (IMG:style_emoticons/default/tongue.gif) Może nie jest profesjonalnie zrobione ale jedyne co na szybko przyszło mi do głowy (IMG:style_emoticons/default/smile.gif)

Może ona trochę wyjechać poza 400 zależnie od długości ostatniego wyrazu, ale inaczej się nie da sie zrobić (IMG:style_emoticons/default/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
Post #3





Goście







Dzięki mistrzu, pięknie działa, tak jak chciałem (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
aachi
post
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:40