Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyszukiwanie linków
Forum PHP.pl > Forum > PHP
pitu
Witam

Wczoraj przeglądałem sobie forum, nie jestem pewien czy na pewno widziałem to tutaj. Ale nie mogę już tego znaleść. A chodzi mi o skrypt, w którym mógłbym dopisać adresy stron i on by sprawdzał czy mój link tam jest, lub chociaż taki, w którym mógłbym wpisywać adresy i sprawdzać czy są tam moje linki. Bo tak sprawdzać wszystkie strony na, których powinien być mój link nie ma sensu.

Z góry dzięki za pomoc.
marcio
Chyba curl+wyrazenia regularne
pitu
A może jaśniej jestem w php laikiem
Landon
No więc napisanie czegoś takiego nie będzie trudne:

no wiec zaczynamy budować klasę

  1. <?
  2. class nazwa {
  3. var $linki;
  4.  
  5. function __construct($url, $linki) {
  6. $this -> linki = $linki;
  7. foreach ($url as $k => $w) {
  8. $this -> szukaj($w);
  9. }
  10. }
  11.  
  12. function open($url) {
  13. $tresc = file_get_contents($url);
  14. if (!$tresc) {
  15. $uchwyt = fopen($url, "rb");
  16. $tresc = stream_get_contents($uchwyt);
  17. fclose($uchwyt);
  18. }
  19. return $tresc;
  20. }
  21.  
  22. function szukaj($url) {
  23. $body = $this -> open($url);
  24. $this -> get_links($body, $url);
  25. }
  26.  
  27. function get_links($body, $url) {
  28. $j = 0;
  29. for ($i=0; $i<=strlen($body); $i++) {
  30. if (substr($body, $i, 1+1) == "<a") {
  31. $j++;
  32. $st = $i;
  33. $k = $i;
  34. while (substr($body, $k,3) != "/a>") {
  35. $k++;
  36. }
  37. $en = $k+2+1;
  38. $linki[$j] = substr($body, $st ,$en-$st);
  39. }
  40. }
  41. $k = 0;
  42. $n = 0;
  43. for ($i=1; $i <= count($linki); $i++) {
  44. for ($j=1; $j <= strlen($linki[$i]); $j++) {
  45. if (substr($linki[$i], $j, 5) == 'href=') {
  46. $n++;
  47. $st = $j+5;
  48. $m = $j+5;
  49. while (substr($linki[$i], $m, 1) != '>') {
  50. $m++;
  51. }
  52. $en = $m;
  53. $temp = substr($linki[$i],$st,$en-$st);
  54. $temp = str_replace('"', '', $temp);
  55. $temp = str_replace("'", "", $temp);
  56.  
  57. echo (in_array($temp, $this -> linki)) ? 'Na '.$url.' jest '.$temp.'<br>' : '.';
  58. }
  59. }
  60. }
  61. }
  62.  
  63. }
  64. $linki = array("http://osadnicy.net", "http://forum.osadnicy.net"); // moje linki
  65. $url = array("http://wyszukaj.osadnicy.net", "http://crysis.in5.pl"); // na jakich stronach
  66.  
  67. $nazwa = new nazwa($url, $linki);
  68. ?>


a co do curl

  1. <?php
  2. function open($url) {
  3. $ch = curl_init($url);
  4. curl_setopt($ch, CURLOPT_RETURNTRANSFER , TRUE);
  5. $body = curl_exec($ch);
  6. $info = curl_getinfo($ch);
  7. curl_close($ch);
  8. $test = ($info['http_code'] != 404 && $info['http_code'] != 0) ? true : false;
  9. return $body;
  10. }
  11. ?>


dodatkowo sprawdzamy stan etc strony... albo poporstu samo

  1. <?
  2. $body = file_get_contents($url)
  3. ?>


A i napewno da sie krucej ale nie maiłem czasu.. tongue.gif
pitu
A mógłbyś napisać jak to użyć? Bo zrobiłem dokument php i wkleiłem trzy kody jeden pod drugim i wywala błąd
dr_bonzo
pitu120: a moze bys poznal podstawy php (to bys poradzil sobie z wklejeniem skryptu), i POKAZAL tresc bledu.
pitu
Tak nie miałem jeszcze takiego problemu ze skryptem, żebym nie wiedział jak go wkleić a błąd to:
  1. <?php
  2. Warning: file_get_contents() expects parameter 1 to be string, array given in /var/www/vhosts/stronaWWW/httpdocs/urls.php on line 81
  3. ?>
webdice
Jak sama treść błędu mówi, funkcja file_get_contents" title="Zobacz w manualu PHP" target="_manual potrzebuje jednego argumentu, po więcej informacji odsyłam do manuala.
Landon
poprawne jest to pierwsze:

  1. <?php
  2. function open($url) {
  3. $tresc = file_get_contents($url);
  4. if (!$tresc) {
  5. $uchwyt = fopen($url, "rb");
  6. $tresc = stream_get_contents($uchwyt);
  7. fclose($uchwyt);
  8. }
  9. return $tresc;
  10. }
  11. ?>


a to drugie zastępujesz za to co teraz o ile chcesz curla smile.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.