![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 0 Dołączył: 13.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Najpiewr przedstawię skrypt, a potem opiszę problem...
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 2 Dołączył: 15.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Użyć curla:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 0 Dołączył: 13.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Najlepsze jest to, że używam curla, tylo napisałem tutaj file_get_contents, bo to nie duża różnica...
Mam taką funkcję:
I to samo... Ten post edytował Warmix 25.02.2012, 15:40:36 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 2 Dołączył: 15.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Zauważ jak daję linki w tablicy:
http://pastebin.com/0SR6eZ4a W twoim były jeszcze tabulatory/spację a nie tylko znak nowej linii. btw. Na xampp kiedy używam file_get_contents wywala 404, dlatego wolę curla - bardziej niezawodny. Ten post edytował kaki2308 25.02.2012, 15:53:54 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 0 Dołączył: 13.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
ALe to akurat nie ma znaczenia... Oprócz tego, co jest tutaj, sprawdza mi warunek, czy linki są poprawne i żadnych błędów nie ma...
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
forum.php.pl nie jest prawidłowym adresem url. Prawidłowy adres to http://forum.php.pl (odnośnik sam się z tego zrobił).
EDIT: załatwiłoby sprawę Poza tym sprawdzaj, czy file_get_contents(), czy też CURL pobiera to, co powinien - curl_error() Ten post edytował mortus 25.02.2012, 18:31:38 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 0 Dołączył: 13.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wiem, wiem... mam linki zaczęte od http...
A co to robi? Żadnych zmian nie ma... |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Wiem, wiem... mam linki zaczęte od http... Jeśli tak, to użyj trim() na $exp[$x]. Poza tym - jak wyżej - curl_error(). A co to robi? Żadnych zmian nie ma... To umieszczasz na początku pliku i powinieneś otrzymać trzy ostrzeżenia. Ten post edytował mortus 25.02.2012, 18:39:57 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 173 Pomógł: 0 Dołączył: 13.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, wystarczyło zastosować trim...
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 29.06.2025 - 21:54 |