$kod = 'forum.php.pl forum.php.pl forum.php.pl <a href="http://phpedia.pl/wiki/Specjalna:Ostatnie_zmiany';" target="_blank">http://phpedia.pl/wiki/Specjalna:Ostatnie_zmiany';</a> for($x = 0; $x < $ile_exp; $x++) { { $ilescan++; } }
Oczywiście tutaj tylko przykład, nie wiem, czy działa...
Na początku wszystko działa dobrze. Explode robija mi zmianną $kod po \n oraz w zmiennej $ile_exp zapisuje się ile mamy wartości w tablicy (w tym przypadku 4).
I teraz zaczyna się problem... Funkcje w pętli for nie dzialają, jak powinny...
Do zmiennej down_html pobierany jest HTML strony. Dzięki '(exp[$x])' za każdym wykoaniem pętli jest inny HTML. I teraz źle sprawdza mi instrukcja. Czyli jeżeli nie znajdzie mi w tym HTML 'Przedszkole', to do zmiennej $ilescan dodaje +1. Słowo 'Przedszkole' znajduje w 'forum.php.pl', ale w 'http://phpedia.pl/wiki/Specjalna:Ostatnie_zmiany'. Czyli zgodnie z warunkiem, podczas pierwszego wykonania skryptu, do zmiennej $ilescan nie powinno dodawać się +1, dlatego, że warunek nie zostaje spełniony, powieważ znajduje "przedszkole'. Pętla leci dalej i 3 razy warunek nie zostaje spełniony.
Teraz pojawia się problem. Za czartym razem także sprawdza mi, czy jest słowo "przedszkole' i tym razem warunek zostaje spełniony, czyli do zmiennej $ilescan dodaje się +1.
Teraz koniec pętli. Wyświetlam $ilescan, i pojawia mi się wartość '4', a powinno '1', ponieważ warunek został spełniony tylko jeden raz.
Co może być nie tak?
Dodatkowo powiem tak:
W pętli zaraz po $down_html = file_get_contents($exp[$x]);
Dodałem dla testu, żeby mi wyświetliło te HTMLy (echo $down_html)...
Po uruchomieniu skryptu okazało się, że nie wyświetlają się 3 pierwsze HTML. Pojawia się błąd "bad request', ale to zrozumiałe, bo przy wyświetlaniu nie może się na jednaj stronie wyświetlić kilka stron.
Wyświetlił mi się tylko ostatni HTML i teraz ważne. Czyli jeżeli za 3 razami pętli pojawiało się 'Bad request', to od razu wiadome, że warunek if(!preg_match('/Przedszkole/', $down_html)) zostaje spełniony, dlatego dodaje mi +1 do $ilescan, a sprawdza mi tylko ostatnie, a ze względu na to, że w tym ostatnim nie ma tego słowa 'Predszkole', to też dodaje +1.
Łącznie zmienna $ilescan ma '4'.
I teraz nasuwa się pytanie. Bad request pojawia się tylko w przypadku, gdy chcę wyświetlić HTML, czy może nawet wtedy, gdy nie wyświetlam??
Co zrobić, aby działało dobrze?