Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Wyszukiwanie linków
pitu
post
Post #1





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


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.


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
marcio
post
Post #2





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


Chyba curl+wyrazenia regularne


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
pitu
post
Post #3





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


A może jaśniej jestem w php laikiem


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
Landon
post
Post #4





Grupa: Zarejestrowani
Postów: 83
Pomógł: 3
Dołączył: 21.04.2007
Skąd: Sosnowiec

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


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

Ten post edytował Landon 8.05.2008, 21:53:41


--------------------
Go to the top of the page
+Quote Post
pitu
post
Post #5





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


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


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


pitu120: a moze bys poznal podstawy php (to bys poradzil sobie z wklejeniem skryptu), i POKAZAL tresc bledu.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
pitu
post
Post #7





Grupa: Zarejestrowani
Postów: 476
Pomógł: 96
Dołączył: 10.04.2008
Skąd: Koszalin

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


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. ?>


--------------------
HTML/CSS/JS: jsfiddle
SQL: sqlfiddle
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




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.
Go to the top of the page
+Quote Post
Landon
post
Post #9





Grupa: Zarejestrowani
Postów: 83
Pomógł: 3
Dołączył: 21.04.2007
Skąd: Sosnowiec

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


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


--------------------
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 Aktualny czas: 19.08.2025 - 05:31