[php] zapętlenie do..whlie

0

Witam

mam mały problem z zapętleniem ;/

foreach($exp as $p) {

	do{
					if(ereg('width="25">', $p) && $lista == '') {
						ereg('width="25">(.*)</TD>', $p, $b);
						$kt3 = strpos($b[1], '</');
						$lista = substr($b[1],0,$kt3);

					if(ereg('style="padding-bottom:4px">', $p) && $utwory == '') {
						ereg('<TD class=a2 valign=top style="padding-bottom:4px">(.*)</TD>', $p, $b1);
						$kt4 = strpos($b1[1], '</');
						$utwory = substr($b1[1],0,$kt4);

				
						echo '<br>'.$lista.'&nbsp;'.$utwory.'';
			
				
					}
					}
					} while(strlen($utwory) > 1);
	}

wyrzuca mi błąd

Fatal error: Maximum execution time of 15 seconds exceeded in /home/ok:0/public_html/a.php on line 76

linia 76

if(ereg('width="25">', $p) && $lista == '') {

adres do pliku ;p
http://speedtra.webd.pl/a.php

0

wewnątrz pętli foreach masz pętle

wykonuj
kod
dopóki długość napisu "utwory" > 1

a w kodzie nic się nie zmienia - wynik jest zawsze ten sam więc jeśli raz zmienna utwory będzie miała długość > 1 to to już sie nie zmieni i utworzy się nieskończona pętla
nie wiem co chciałeś w tym kodzie uzyskać ale wydaje mi się że po prostu nie chciałeś tej wewnętrznej pętli

0

Na dodatek:

  1. używaj strpos zamiast ereg do szukania prostych ciągów znaków
  2. nie używaj ereg w ogóle - zamiast tego używaj preg_match dla wyrażeń regularnych

ereg to archaizm, ma zniknąć z php

0

a to jak mam zrobić żeby by wypisało wszystkie utwory ?:D

0

preg_match_all

1 użytkowników online, w tym zalogowanych: 0, gości: 1