Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: preg_match_all wyciągnięcie znacznika <a>(.*?)</a>
Forum PHP.pl > Forum > PHP
Randallmaster
  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, "http://www.infopraca.pl/praca/1/wielkopolskie/kalisz");
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $result = curl_exec($curl);
  8. curl_close($curl);
  9.  
  10. //links
  11.  
  12.  
  13. if (preg_match_all("#<p class=\"job-title\">(.*?)</p>#", $result, $links))
  14. {
  15. foreach ($links[0] as $link)
  16. {
  17. if (preg_match_all("#<a href=\"(*)\">(.*?)</a>#", $result, $links))
  18. {
  19. foreach ($links[1] as $link)
  20. {
  21. echo $link."<br>";
  22. }
  23. }
  24. }
  25.  
  26. }
  27.  
  28. ?>


Mam taki kod i w miejscu gdzie jest <a href chce mieć tylko wywołane to co jest pogrubione... Jak to zrobić? Siedzę już 2h nad tym sad.gif
mr__y
Spróbuj 2 zamiast 1 smile.gif
Zamiast
  1. foreach ($links[1] as $link)

daj:
  1. foreach ($links[2] as $link)

Randallmaster
i tak nie wyświetla mi tego co bym chciał.... tutaj jest błąd: <a href=\"(.*?)\"> sad.gif

Chciałbym aby wyświetlało się np: Rozdawanie ulotek - KALISZ i link do tego... ale najpierw muszę wyodrębnić to co jest pomiędzy znacznikami <a></a> ale w <p class="">

Link do tego co wyszło:

http://www.pracujkalisz.pl/infopraca.php sad.gif
Ges
Zgadujecie z tym 1, 2 ? tongue.gif

Jeden główny błąd:

W wewnętrznym preg_matchu nie szukałeś w już przefiltrowanych wynikach (tzn we wszystki <p job-title>
tylko szukales w $result czyli całej stronie.

No i jeszcze przeczytaj dokładnie opis preg_match, w 0 indexie masz wszystkie wyniki które były dopasowane do wyrażenia, a dopiero w [1] masz te na ktorych Ci zależy.

Poprawny kod:

  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, "http://www.infopraca.pl/praca/1/wielkopolskie/kalisz");
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $result = curl_exec($curl);
  8. curl_close($curl);
  9.  
  10. //links
  11. $baseUrl = "http://www.infopraca.pl";
  12.  
  13. if (preg_match_all("#<p class=\"job-title\">(.*?)</p>#", $result, $links))
  14. {
  15. foreach ($links[1] as $link)
  16. {
  17. if (preg_match_all("#<a href=\"(.*?)\">(.*?)</a>#", $link, $links))
  18. {
  19. foreach ($links[1] as $index => $link)
  20. {
  21. $href = $baseUrl . $link;
  22. print "<a href=\"$href\">".$links[2][$index]."</a><br />";
  23. }
  24. }
  25.  
  26. }
  27.  
  28. }
  29.  
  30. ?>
  31.  


Tak przy okazji to już Twój trzeci post, z tym samym problemem. Mógłbyś jakoś to skonsolidować tongue.gif a nie zakładać kolejne tematy na najdrobniejszy problem.
Randallmaster
Dziękuję ale w poprzednim kodzie troszkę było inaczej tongue.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.