Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Foreach oraz preg_match_all
Forum PHP.pl > Forum > Przedszkole
Zakar
Witam ponownie,
ja z jeszcze jednym problemem, a mianowicie:

dlaczego ten skrypt
  1. <?php
  2. set_time_limit(0); //pozbywam się ograniczeń czasowych!
  3. $imiona = explode("\n", file_get_contents('im.txt')); //pobieram imiona z pliku im.txt
  4. foreach ($imiona as $urll) //każdemu imieniu przypisuje nazwę $urll
  5. {
  6. $url = "http://xxx=$urll"; //podstawiam każde imie do linku $url
  7. $fp = fopen($url, "r")
  8. or die("blad");
  9. $page_content = "";
  10. while ($new_text = fread($fp, 6000))
  11. {
  12. $page_content .= $new_text;
  13. }
  14. $match_result =
  15. preg_match_all('/\=(\d\d\d\d\d\d\d\d\d)\"\>([^>]*)\</i', //wyrażenie szukające numerów i imion
  16. $page_content,
  17. $match_array,
  18. PREG_SET_ORDER
  19. );
  20. foreach ($match_array as $d) //każdemu wyrażeniu przpisuje $d
  21. {
  22. $z = preg_match("/$urll/i", $d[2]); //jak w d[2] znajdę imie ($urll) to idzie dalej
  23. if($z == true) //o tu idzie dalej
  24. {
  25. $href = $d[1]; //zapisuje numer do $href'a jak znajdzie to imie w d
  26. file_put_contents($urll, $href, FILE_APPEND); //zapisuje numer do pliku o nazwie $urll czyli imie
  27. }
  28. else {echo "$urll+blad<br>";};
  29. }
  30. }
  31. ?>

nie tworzy 3 plików (przy założeniu że w im.txt mam trzy imiona) tylko jedno i to w dodatku tylko ostatnie
np.:

mam tam imiona: Kacper, Jacek, Darek

to jedyne co ten skrypt mi zwróci to serię błędów Kasper+blad, Jacek+blad, kilka błędów Darek+blad (czego oczekuje) oraz JEDEN tylko plik Darek w którym będa zapisane numery (tylko z wyszukiwania Darek) pasujące do wyrażenia.
Jednak jesli puszczę ten skrypt tylko z jednym imieniem w pliku im.txt to idzie tak jak powinno, z dwoma to zrobi tylko dla drugiego, z trzema dla trzeciego itp a dla wszystkich wcześniejszych zwraca same błędy.

Co zrobić aby ten skrypt przechodził przez całe imie sprawdzając OBA WYRAŻENIA, przy czym jeśli drugie będzie prawdziwe (tam gdzie jest IF) to zapisywał do pliku wartość z tablicy d[1]?

Pozdrawiam i z góry dziękuję
Zakar

ps. Sory za komentarze, ale jako że jestem nowy staram się wszystko opisywać, aby wiedzieć co co robi wink.gif
!*!
  1. preg_match_all('/\=(\d\d\d\d\d\d\d\d\d)\"\>([^>]*)\</i'


To się w ogóle wykonuje poprawnie, bo mam dziwne wrażenie że nie. Pokaż zawartość tego pliku z imionami.
Sprawdzaj po kolei też co zwracają tablice, zmienne print_r var_dump
Zakar
Tak, o dziwo się poprawnie wykonuje biggrin.gif

Poradziłem sobie z tym, problemem była funkcja explode przez parametr \n gdyż potem preg_match_all wyszukiwał $urll\n (czego na stronie ofc nie ma;) ).

Jak na razie w momencie gdy ręcznie utworze tablice ($imiona = array ('darek', 'waldek', 'bla', 'blabla')) wszystko wykonuje się poprawnie. Więc jedyne co mi zostaje to ręczne wpisanie tych wszystkich imion do tablicy wink.gif będzie to udręka bo imion do wpisania mam ponad 150 a kazde musi być w ' ' ...:/

Ale dzięki za odpowiedźwink.gif
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.