Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Problem z dzieleniem teksu na czesci
Forum PHP.pl > Forum > PHP
Matiash
Chcialem wiekszy teks podzielic sobie na mniejsze czesci zeby potem wyswietlac go na stronie w odpowiednim ukladzie. Doszedlem do wniosku ze jedynym rozsadnym rozwiazaniem jest dzielenie go za kazdym razem po kropce czyli po zakonczonym zdaniu bo inaczej wyglada to beznadziejnie.

I tak teskt dziele na 11 czesci przy czym 6 z nich jest wieksza (porcja=3700) druga czesc jest mniejsza (porcjamini=450). Tekst poczatkowy czyli $tresc chce umiescic o tablicy $nowy.

  1. <?php
  2. $porcja=3700;
  3. $porcjamini=450;
  4. $znacznik=0;
  5.  
  6.  
  7. for($x=0;$x<11;$x++)
  8. {if($x==|| $x==|| $x==|| $x==|| $x==8)
  9. {for($k=0;;$k++)
  10. {
  11. $czesc=substr($tresc,$znacznik+$porcja+$k,1);
  12. if($czesc==".") {$pkt=$k+1; break;}
  13. }
  14. $nowy[$x]=substr($tresc,$znacznik,$porcja+$pkt); 
  15. $znacznik=$znacznik+$porcja+$pkt;
  16. }
  17. if($x==|| $x==|| $x==|| $x==|| $x==9)
  18. {for($k=0;;$k++)
  19. {
  20. $czesc=substr($tresc,$znacznik+$porcjamini+$k,1);
  21. if($czesc==".") {$pkt=$k+1; break;}
  22. }
  23. $nowy[$x]=substr($tresc,$znacznik,$porcjamini+$pkt); 
  24. $znacznik=$znacznik+$porcjamini+$pkt;
  25. }
  26. if($x==10)
  27. $nowy[$x]=substr($tresc,$znacznik,$porcja);
  28. }
  29. ?>


Wszystko dziala dobrze az do momentu gdy trafie na jakas niefortunna wartosc $porcja i dostaje nastepujacy blad:
"Fatal error: Maximum execution time of 30 seconds exceeded in..."

Gdzie popelniam blad i czy to nie jest po prostu spowodowane ograniczeniem serwera bo funkcja szuka kropki tak dlugo az znajdzie wiec dzialac powinno zawsze?!
Czy jest jakies lepsze rozwiazanie tego problemu? Moze gotowa funkcja?
joebezucha
wysypuje sie bo w przypadku gdy w stringu nie będzie kropki i spacji ". " to nie wyjdzie z pętli instrukcją break. Jesli stosujesz nieskonczoną pętle for to musisz zrobic warunek wyjscia , który w kazdej sytuacji zadziała.
Matiash
Tak tylko ze mi sie wysypuje w przypadku gdy jest kropka. Ale wpadlem na inny pomysl zobcze czy bedzie dzialac...


Edit: Juz nieaktualne smile.gif Inny pomysl okazal sie byc calkiem dobry...
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.