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%)
-----


Ze względu na to, ze linki na stronie z której je pobierasz są linkami względnym, pronowałbym takie modyfikacje:

1. dogrzebanie się do hrefa wewnatrz tych linków (względne ścieżki linków)
2. dopisanie do niego prefixu w postaci bazowego urla
3. printowanie ich bez <strong> itd itp. tylko samemu dopisanie <a href="">

Poza tym myślę, że właśnie to chciałeś osiągnąć używając w wewnętrznym preg_match_all zapisu (.*?)
Tylko potem zrobiłeś błąd próbując printować $links[0]. Gdybyś uważniej przestudiował dokumentacje wpadłbyś na fakt, iż wyniki dopasowań zdefiniowane przez ( ) znadują się w indeksach od 1 w górę do ilości () w preg_match_all.

Kod który poprawia ten błąd i wyciągą ścieżki względne.

  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 $link)
  20. {
  21. $href = $baseUrl . $link;
  22. print "<a href=\"$href\">$href</a><br />";
  23. }
  24. }
  25. }
  26.  
  27. }
  28.  
  29. ?>


Ten post edytował Ges 11.03.2010, 14:36:26
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: 8.10.2025 - 11:18