Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> preg_match_all wyciągnięcie znacznika <a>(.*?)</a>
Randallmaster
post 11.03.2010, 18:22:35
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
mr__y
post 11.03.2010, 18:24:17
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 9.10.2003

Ostrzeżenie: (0%)
-----


Spróbuj 2 zamiast 1 smile.gif
Zamiast
  1. foreach ($links[1] as $link)

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



Ten post edytował mr__y 11.03.2010, 18:24:54
Go to the top of the page
+Quote Post
Randallmaster
post 11.03.2010, 18:46:00
Post #3





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
Ges
post 11.03.2010, 21:53:39
Post #4





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Randallmaster
post 11.03.2010, 22:02:13
Post #5





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Dziękuję ale w poprzednim kodzie troszkę było inaczej tongue.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 20:42