Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt pobierający odnośnik ze strony i zamieniający go
Forum PHP.pl > Forum > PHP
Kostekk
Jest to mój pierwszy post na tym forum, więc się przywitam: Cześć.

Chcę zrobić skrypt, który będzie brał ze strony X wszystkie odnośniki zaczynające się od http://y/, zmieniał w nim kawałek linka (np. adres z y na z), a potem zwracał go zmienionego.
Tyle, że wiem tylko jak zamienić tekst (str_replace), a nie wiem jak zrobić to pobieranie linków.
No i zwracam się z prośbą do Was, czy ktoś mógłby mi pomóc i napisać chociaż jakiś szablon, który by pobierał linki? Zobaczę jak działa i pozmieniam to co mi potrzebne.
elemek
wyciaganie linkow ze strony:

  1. <?php
  2. error_reporting(E_STRICT | E_ALL);
  3. /**
  4.  * Tool for downloading files and fetching HTML contents for given URL.
  5.  * @author Marcin Malinowski /ElemeK
  6.  * @copyright 2008
  7.  * @version 1.0.3.17 (skrócona)
  8.  *
  9.  */
  10. class CurlTool {
  11.  
  12. /*
  13.  * Default options, feel free to alter them and add new before calling main func
    tions.
  14.  */
  15. public static $options = array(
  16. CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9) Gecko/2008052906 Firefox/3.0',
  17. CURLOPT_AUTOREFERER => true,
  18. CURLOPT_COOKIEFILE => '',
  19. CURLOPT_FOLLOWLOCATION => true
  20. );
  21.  
  22. /**
  23.  * Use this function to download web page internal HTML.
  24.  * @param string $url web page url.
  25.  * @param boolean $verbose status messages are displayed when this is set to tru
    e.
  26.  * @return string web page internal HTML.
  27.  */
  28. public static function fetchContent($url, $verbose = false) {
  29. if (($curl = curl_init($url)) == false) {
  30. throw new Exception("curl_init error for url $url.");
  31. }
  32.  
  33. if ($verbose === true) {
  34. echo "Reading $url ... ";
  35. }
  36.  
  37. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  38. curl_setopt_array($curl, self::$options);
  39.  
  40. $content = curl_exec($curl);
  41. if ($content === false) {
  42. throw new Exception("curl_exec error for url $url.");
  43. }
  44.  
  45. curl_close($curl);
  46. if ($verbose === true) {
  47. echo "Done.\n";
  48. }
  49.  
  50. return $content;
  51. }
  52. }
  53.  
  54. '#href="(http://www.onet.pl/.+?)"#i',
  55. CurlTool::fetchContent('http://www.onet.pl'),
  56. $linki,
  57. PREG_SET_ORDER
  58. );
  59.  
  60. print_r($linki);
  61. ?>
Kostekk
Dzięki elemek, ale wyskakuje error:
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /ścieżka/skrypcik.php on line 15
linia 15 to ta: public static $options = array(
elemek
musiales cos zle skopiowac to na pewno dziala, probowalem nawet skopiowac z forum i tez poszlo wiec musi dzialac smile.gif
Kostekk
U mnie nie idzie :S. http://fou.vizz.pl/kostek/skrypcik.php Zobacz sam :S.
elemek
huh chyba chodzi o wersje php pewnie masz tam czwórke a ten kod wymaga chyba 5 ;/

spróbuj tego:
  1. <?php
  2. error_reporting(E_STRICT | E_ALL);
  3.  
  4. function fetchContent($url, $verbose = false) {
  5. if (($curl = curl_init($url)) == false) {
  6. return false;
  7. }
  8.  
  9. if ($verbose === true) {
  10. echo "Reading $url ... ";
  11. }
  12.  
  13. curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  14.  
  15. $content = curl_exec($curl);
  16. if ($content === false) {
  17. return false;
  18. }
  19.  
  20. curl_close($curl);
  21. if ($verbose === true) {
  22. echo "Done.\n";
  23. }
  24.  
  25. return $content;
  26. }
  27.  
  28.  
  29. '#href="(http://www.onet.pl/.+?)"#i',
  30. fetchContent('http://www.onet.pl'),
  31. $linki,
  32. PREG_SET_ORDER
  33. );
  34.  
  35. print_r($linki);
  36. ?>
Kostekk
Z tego co jest w cPanelu napisane to:
Wersja PHP 5.2.6
Także nie wiem o co może chodzić.
@edit:
a w phpinfo();
http://fou.vizz.pl/kostek/phpinfo.php
Edit2:
Co do tego nowego skryptu to:
Parse error: syntax error, unexpected T_NEW in /home/fouvizz/public_html/kostek/skrypcik.php on line 26
elemek
ja tu widze PHP Version 4.4.8 smile.gif
spróbuj ten drugi kod dwa posty wyżej bez klas
Kostekk
elemek, skrypt 2 posty wyżej:
Parse error: syntax error, unexpected T_NEW in /home/fouvizz/public_html/kostek/skrypcik.php on line 26
@edit:
Notice: Use of undefined constant CURLOPT_AUTOREFERER - assumed 'CURLOPT_AUTOREFERER' in /home/fouvizz/public_html/kostek/skrypcik.php on line 20

Fatal error: Call to undefined function: curl_setopt_array() in /home/fouvizz/public_html/kostek/skrypcik.php on line 34
elemek
exception tez nie bylo w 4 ;]
sproboj teraz i jak cos to edit ;]

EDIT: teraz to juz chyba pojdzie ;]
Kostekk
Kod
Array (     [0] => Array         (             [0] => href="http://www.onet.pl/search.xml"             [1] => http://www.onet.pl/search.xml         )      [1] => Array         (             [0] => href="http://www.onet.pl/set.html?g=1&e=1"             [1] => http://www.onet.pl/set.html?g=1&e=1         )      [2] => Array         (             [0] => href="http://www.onet.pl/set.html?g=0&e=0"             [1] => http://www.onet.pl/set.html?g=0&e=0         )      [3] => Array         (             [0] => href="http://www.onet.pl/wszystkie"             [1] => http://www.onet.pl/wszystkie         )      [4] => Array         (             [0] => href="http://www.onet.pl/292-46148e77"             [1] => http://www.onet.pl/292-46148e77         )      [5] => Array         (             [0] => href="http://www.onet.pl/38d-468a464b"             [1] => http://www.onet.pl/38d-468a464b         )      [6] => Array         (             [0] => href="http://www.onet.pl/prywatnosc/"             [1] => http://www.onet.pl/prywatnosc/         )      [7] => Array         (             [0] => href="http://www.onet.pl/wszystkie/"             [1] => http://www.onet.pl/wszystkie/         )  )

Dziękować Ci. Jakbym jeszcze czegoś potrzebował dam Ci znać smile.gif.
No i mam już problem,. Nie wyświetla mi danych z tej strony, z której chcę wziąć dane. Jest to spowodowane tym, że ma brać z tej strony
fetchContent('http://www.xxx.xxx/costam.php?get=costam'),
A tam jest zmienna get.
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.