Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zamiana poczatku url na inny....
Randallmaster
post
Post #1





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

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


Witam serdecznie.. Napisałem taki skrypt:

  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt ($curl, CURLOPT_URL, "http://praca.gazetapraca.pl/0,4050,,,1,20,-postDate,,,,,,Kalisz,,,0,,,,,,,,133.html");
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $result = curl_exec ($curl);
  8. curl_close ($curl);
  9.  
  10.  
  11. //links
  12. if(preg_match_all("#<div class=\"c0\">(.*?)</div>#", $result, $links))
  13. {
  14. foreach($links[0] as $link)
  15. {
  16. if(preg_match_all("#<strong>(.*?)</strong>#", $result, $links))
  17. {
  18. foreach($links[0] as $link)
  19. {
  20. echo $link."<br />";}
  21. }
  22. }
  23.  
  24. }
  25.  
  26. ?>


Wyniki działania:
http://www.pracujkalisz.pl/dane.php

jedynie co źle wychodzi to link:

http://www.pracujkalisz.pl/200,4001,,76866...r+Naczelny.html

a powinno być tak:

http://praca.gazetapraca.pl/200,4001,,7686...r+Naczelny.html

jak zamienić początki linku??
to:
http://www.pracujkalisz.pl/
na:
http://praca.gazetapraca.pl/

prosze o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Ges
post
Post #2





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

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


Naprowadzę Cię :]

Wyciągamy teraz z tych linków same hrefy, których dopasowania trafiają do $links[1], ponieważ jest to pierwszy "()" w naszym preg_match_all.
Potrzebowalibyśmy teraz wyciągnąć to co jest za linkiem poza hrefem.
Więc modyfikujemy preg_match_all.

  1. if (preg_match_all("#<strong>.*<a href=\"(.*)\" >(.*)</a></strong>#", $result, $links))


Co to daje ? Teraz wszystko co jest:

href=\"TUTAJ\" => trafia do $links[1]

A wszystko co jest pomiędzy:
<a>TUTAJ</a> => trafia do $links[2]

Więc to drugie umożliwa nam dostanie się do opisu linka :]

Teraz już pozostaje tylko sformatowanie danych, które mamy dostępne.
Na przykład w ten sposób:

  1. foreach ($links[1] as $index => $link)
  2. {
  3. $href = $baseUrl . $link;
  4. print "<a href=\"$href\">".$links[2][$index]."</a><br />";
  5. }


Cały kod wyglądałby tak:

  1. <?php
  2.  
  3. $curl = curl_init();
  4. curl_setopt($curl, CURLOPT_URL, "http://praca.gazetapraca.pl/0,4050,,,1,20,-postDate,,,,,,Kalisz,,,0,,,,,,,,133.html");
  5. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  6.  
  7. $result = curl_exec($curl);
  8. curl_close($curl);
  9.  
  10. //links
  11. $baseUrl = "http://praca.gazetapraca.pl/";
  12.  
  13. if (preg_match_all("#<div class=\"c0\">(.*?)</div>#", $result, $links))
  14. {
  15. foreach ($links[0] as $link)
  16. {
  17. if (preg_match_all("#<strong>.*<a href=\"(.*)\" >(.*)</a></strong>#", $result, $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.  



Mam nadzieję, że wyniesiesz z tego posta coś więcej niż gotowy kod, który notabene przygotowali Ci ludzie z tego forum, bo widzę, że początkowy kod został stworzony też harytatywnie na Twoją prośbę w osobnym poście.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 5.10.2025 - 16:10