Interne Suche mit PHP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Interne Suche mit PHP

    Hallo,
    Ich habe ein Script gefunden. Dieses sucht nur auf dem eigendem Server. Ist es möglich dieses Script derart umzuwandeln , das es auch auf anderen Server sucht, oder im Web? Die Suche hat nur eine datei: die suchen.php :

    Quellcode

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    2. <html>
    3. <head>
    4. <title>PHP-Suchmaschine</title>
    5. <style>
    6. body,td,input { font-family:Verdana;font-size:7.9pt }
    7. .t_nummer { font-family:Verdana,Tahoma,Arial; font-size:16pt; font-weight:bold; color:#999999}
    8. .markierung {color:#ff0000}
    9. </style>
    10. </head>
    11. <body>
    12. <?
    13. ########### PHP-Suchmaschine ###########
    14. ########### powered by Viktor Widiker & [url=http://www.widiker.de]http://www.widiker.de[/url], Berlin 2002 ###########
    15. ########### Hier folgen die Einstellungen ###########
    16. $max_suchwoerter=3; # Maximale Anzahl der Suchwörter, die wahrgenommen werden
    17. $treffer_pro_seite=10; # Wie viele Treffer werden pro Ergebnisseite angezeigt?
    18. $endungen=array("html","htm","php","phtml"); # Dateien mit welchen Endungen werden durchsucht?
    19. $pfade_gesamt="./"; # Adressen (relativ zum Suchmaschinennskript) der zu durchsuchenden Ordner (durch Kommata trennen!)
    20. $max_stelle=200; # Maximale (ungefähre) Länge (in Zeichen) der ersten gefundenen Textstelle
    21. $mehr_laenge=200; # Maximale (ungefähre) Länge (in Zeichen) des Strings für weitere Vorkommnisse
    22. ########### Ab hier folgt die Suche #######
    23. if (!isset($grossschreibung)) { $grossschreibung=0; }
    24. if (!isset($ganzewoerter)) { $ganzewoerter=0; }
    25. if (!isset($index)) { $index=0; }
    26. $suchtext=trim(stripslashes($suchtext));
    27. if ($grossschreibung==0) { $suchtext=strtolower($suchtext); }
    28. $suchtext=ereg_replace(","," ",$suchtext);
    29. $suchtext2=array(); $suchwoerter=array();
    30. $suchtext2=explode(" ",$suchtext);
    31. foreach ($suchtext2 as $einwort)
    32. {
    33. if (($einwort!="") && (count($suchwoerter)<=($max_suchwoerter-1)) && (!in_array($einwort,$suchwoerter)))
    34. { array_push($suchwoerter,$einwort); }
    35. }
    36. $suchtext=implode(" ",$suchwoerter);
    37. ?>
    38. <form action="<? echo "$PHP_SELF"; ?>" method="post">
    39. <table width="500" cellpadding="5" cellspacing="0" border="0" bgcolor="#ccddee" align="center">
    40. <tr>
    41. <td align="right">
    42. <?
    43. echo "<input type=\"text\" name=\"suchtext\" size=\"";
    44. $browser=$HTTP_USER_AGENT;
    45. if (1*strpos(strtolower($browser),"msie")>0) { echo "25"; } else { echo "14"; }
    46. echo "\" value=\"".$suchtext."\"><br><br>";
    47. ?>
    48. <input type="submit" value=" suchen ">
    49. </td>
    50. <td>
    51. <b>Groß- und Kleinbuchstaben</b><br>
    52. <input type="radio" name="grossschreibung" value="1" <? if ($grossschreibung==1) echo "checked"; ?>>unterscheiden<br>
    53. <input type="radio" name="grossschreibung" value="0" <? if ($grossschreibung==0) echo "checked"; ?>>nicht unterscheiden
    54. </td>
    55. <td>
    56. <b>Art der Suche</b><br>
    57. <input type="radio" name="ganzewoerter" value="1" <? if ($ganzewoerter==1) echo "checked"; ?>>nur ganze Wörter<br>
    58. <input type="radio" name="ganzewoerter" value="0" <? if ($ganzewoerter==0) echo "checked"; ?>>Wortteile
    59. </td>
    60. </tr>
    61. </table>
    62. </form>
    63. <?
    64. if ($suchtext!="") { start(); ausgabe(); }
    65. function start()
    66. {
    67. global $suchwoerter,$grossschreibung,$ganzewoerter,$dateinummer,$treffer,$max_stelle,$mehr_laenge;
    68. global $endungen,$pfade_gesamt;
    69. $dateinummer=0;
    70. $treffer=array();
    71. $pfade=array(); $pfade=explode(",",$pfade_gesamt);
    72. foreach ($pfade as $pfad)
    73. {
    74. $ordner=opendir($pfad);
    75. while ($eintrag=readdir($ordner))
    76. {
    77. $name=$pfad.$eintrag;
    78. $dateiname=explode(".",$eintrag);
    79. if (in_array($dateiname[1],$endungen))
    80. {
    81. $anzahl=0;
    82. $schluss=0;
    83. $gefundene_woerter=array();
    84. $datei=fopen($name,"r");
    85. while (!feof($datei))
    86. {
    87. $zeile=fgetss($datei,10000,"");
    88. if ($grossschreibung==0) { $zeile=strtolower($zeile); }
    89. $woerter=explode(" ",$zeile);
    90. foreach ($woerter as $wort)
    91. {
    92. foreach ($suchwoerter as $suchwort)
    93. {
    94. ### ganze Wörter ###
    95. if ($ganzewoerter==0)
    96. {
    97. if (strstr($wort,$suchwort))
    98. {
    99. if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
    100. $anzahl++;
    101. $treffer["vorkommnisse"][$dateinummer]++;
    102. if ($anzahl==1)
    103. {
    104. $treffer["datei_url"][$dateinummer]=$name;
    105. $position=strpos($zeile,$wort);
    106. $wortlaenge=strlen($wort);
    107. $zeilenlaenge=strlen($zeile);
    108. if ($zeilenlaenge>$max_stelle)
    109. {
    110. $lside=$position-(($max_stelle-$wortlaenge)/2);
    111. $rside=$lside+$max_stelle;
    112. if ($lside<0) { $rside=$rside-$lside; $lside=0; }
    113. if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
    114. }
    115. else { $lside=0; $rside=$zeilenlaenge; }
    116. $stelle=substr($zeile,$lside,$rside-$lside);
    117. $stelle=ereg_replace($wort,"<span class=\"markierung\">".$wort."</span>",$stelle);
    118. $stelle="...".$stelle."...";
    119. $treffer["textstelle"][$dateinummer]=$stelle;
    120. }
    121. else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
    122. else if ($anzahl>2)
    123. {
    124. if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
    125. else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
    126. }
    127. }
    128. }
    129. ### ganze Wörter ENDE ###
    130. ### Wortteile ###
    131. else
    132. {
    133. if ($wort==$suchwort)
    134. {
    135. if (!in_array($suchwort,$gefundene_woerter)) { array_push($gefundene_woerter,$suchwort); }
    136. $anzahl++;
    137. $treffer["vorkommnisse"][$dateinummer]++;
    138. if ($anzahl==1)
    139. {
    140. $treffer["datei_url"][$dateinummer]=$name;
    141. $position=strpos($zeile,$wort);
    142. $wortlaenge=strlen($wort);
    143. $zeilenlaenge=strlen($zeile);
    144. if ($zeilenlaenge>$max_stelle)
    145. {
    146. $lside=$position-(($max_stelle-$wortlaenge)/2);
    147. $rside=$lside+$max_stelle;
    148. if ($lside<0) { $rside=$rside-$lside; $lside=0; }
    149. if ($rside>$zeilenlaenge) { $rside=$zeilenlaenge; }
    150. }
    151. else { $lside=0; $rside=$zeilenlaenge; }
    152. $stelle=substr($zeile,$lside,$rside-$lside);
    153. $stelle=" ".$stelle." ";
    154. $stelle=ereg_replace(" ".$wort." "," <span class=\"markierung\">".$wort."</span> ",$stelle);
    155. $stelle="...".$stelle."...";
    156. $treffer["textstelle"][$dateinummer]=$stelle;
    157. }
    158. else if ($anzahl==2) { $teil=ereg_replace(",","",$teil); $mehr=$teil; }
    159. else if ($anzahl>2)
    160. {
    161. if (strlen($mehr)<$mehr_laenge) { if ($mehr=="") { $komma=""; } else { $komma=", "; } $wort=ereg_replace(", ","",$wort); $mehr.=$komma.$wort; }
    162. else { if ($schluss!=1) {$mehr=$mehr." ..."; $schluss=1;} }
    163. }
    164. }
    165. }
    166. ### Wortteile ENDE ###
    167. }
    168. }
    169. }
    170. fclose($datei);
    171. $treffer["woerter"][$dateinummer]=count($gefundene_woerter);
    172. $treffer["mehr"][$dateinummer]=$mehr;
    173. if (count($gefundene_woerter)>0) { $dateinummer++; }
    174. }
    175. }
    176. closedir($ordner);
    177. }
    178. }
    179. function ausgabe()
    180. {
    181. global $treffer,$dateinummer,$PHP_SELF,$index,$SERVER_NAME,$treffer_pro_seite,$suchwoerter,$suchtext,$grossschreibung,$ganzewoerter;
    182. echo "<table width=\"500\" border=\"0\" align=\"center\"><tr><td>
    183. ";
    184. echo "<span style=\"font-size:13pt\"><b>Ergebnisse der Suche:</b></span><br><br>
    185. ";
    186. $treffer_anzahl=count($treffer["datei_url"]);
    187. if ($treffer_anzahl==0) { echo "<span style=\"font-size:13pt\"><b><center><br><br>Leider nichts gefunden<br><br></center></b></span></td></tr></table>
    188. "; }
    189. else
    190. {
    191. @array_multisort($treffer["woerter"],SORT_DESC,$treffer["vorkommnisse"],SORT_DESC,$treffer["datei_url"],$treffer["textstelle"],$treffer["mehr"]);
    192. $suchtext=ereg_replace(" ",", ",$suchtext);
    193. if (count($suchwoerter)>1) { echo "Gesuchte Wörter: "; } else { echo "Gesuchtes Wort: "; }
    194. echo "$suchtext<br><br>
    195. ";
    196. $anfang=$index*$treffer_pro_seite+1;
    197. $ende=$anfang+$treffer_pro_seite-1; if ($ende>$treffer_anzahl) { $ende=$treffer_anzahl; }
    198. echo "<b>Treffer $anfang-$ende von insgesamt $treffer_anzahl Treffern, beste Treffer zuerst:<br><br>
    199. ";
    200. echo "</td></tr></table>
    201. ";
    202. for ($k=0;$k<$treffer_pro_seite;$k++)
    203. {
    204. $i=$index*$treffer_pro_seite+$k;
    205. $platz=$i+1;
    206. if ($platz<=$ende)
    207. {
    208. echo "<table width=\"580\" border=\"1\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">
    209. ";
    210. $t=1;
    211. $treffer["datei_url"][$i]=ereg_replace("./","",$treffer["datei_url"][$i]);
    212. $datei=fopen($treffer["datei_url"][$i],"r");
    213. while ($t<7)
    214. {
    215. $zeile=fgetss($datei,1000,""); $zeile=trim($zeile);
    216. if ($zeile!="")
    217. {
    218. echo "<tr><td height=\"16\" colspan=\"2\">";
    219. echo "<span class=\"t_nummer\">".$platz.".</span> <a href=\"".$treffer["datei_url"][$i]."\"><b>".$zeile."</b></a>";
    220. break;
    221. }
    222. $t++;
    223. }
    224. fclose($datei);
    225. if ($treffer["woerter"][$i]==1) { $woerter="Wort"; } else { $woerter="Wörter"; }
    226. if ($treffer["vorkommnisse"][$i]==1) { $vorkommnisse="Vorkommnis"; } else { $vorkommnisse="Vorkommnisse"; }
    227. echo "<p style=\"margin-top:0pt; margin-bottom:0pt\" align=\"justify\">
    228. ";
    229. echo $treffer["textstelle"][$i]."<br>
    230. ";
    231. echo "<small><b>Weitere Vorkommnisse: </b>".$treffer["mehr"][$i]."</small></p></td></tr>
    232. ";
    233. echo "<tr><td><a href=\"http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."\" target=\"_blank\">
    234. ";
    235. echo "<img src=\"newwindow.gif\" width=\"14\" height=\"10\" border=\"0\">
    236. ";
    237. echo " http://".$SERVER_NAME."/".$treffer["datei_url"][$i]."</a></td>
    238. ";
    239. echo "<td align=\"right\"><small><b>".$treffer["woerter"][$i]." ".$woerter." | ".$treffer["vorkommnisse"][$i]." ".$vorkommnisse."</b></small></td>
    240. ";
    241. echo "</td></tr></table><br><br>
    242. ";
    243. }
    244. }
    245. }
    246. if ($treffer_anzahl>0) { echo "<center>Seite:
    247. "; }
    248. $j=ceil($treffer_anzahl/$treffer_pro_seite)-1;
    249. for ($i=0;$i<=$j;$i++)
    250. {
    251. $zahl=$i+1;
    252. if (($index+1)!=$zahl) { echo "<a href=\"$PHP_SELF?suchtext=$suchtext&index=".$i."&grossschreibung=".$grossschreibung."&ganzewoerter=".$ganzewoerter."\">"; }
    253. echo $zahl;
    254. if (($index+1)!=$zahl) { echo "</a>"; }
    255. echo " ";
    256. }
    257. if ($treffer_anzahl>0) { echo "</center>
    258. "; }
    259. }
    260. ########### Ende des Suchmaschinenskripts ###########
    261. ?>
    262. </body>
    263. </html>
    Alles anzeigen


    Vielen Dank! :)
  • traffic = traffic..
    was soll ich sagen...
    alles was du in einer datenbank speichern willst, musst du von einer anderen seite übers web kopieren..kopieren = traffic
    wenn du nur urls spidern willst, macht das weniger traffic
    wenn dein spider nur die ersten 10kb einer seite kopiert, dann hast du eben nur 10kb traffic
    bilder kopiert php nicht :)
  • da kann ich nur wieder auf meinen alten beitrag verweisen..
    <a href='http://www.easy-coding.de/index.php?showtopic=256' target='_blank'>http://www.easy-coding.de/index.php?showtopic=256</a>
    und wenn du es wieder nicht installieren kannst, oder mehr brauchst, dann besorg dir einen coder ($$$)
    dabei ist phpcrawl sooo einfach
    <a href='http://phpcrawl.cuab.de/quickstart.html' target='_blank'>http://phpcrawl.cuab.de/quickstart.html</a>
  • Habe nun alles auf den Server hochgeladen ( <a href='http://www.regon.de/crawl/' target='_blank'>http://www.regon.de/crawl/</a> )
    Und ich ahbe folgende Datei erstelt: (http://www.regon.de/crawl/such.php )

    Quellcode

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    2. <html>
    3. <head>
    4. <title>PHP-Suchmaschine</title>
    5. </head>
    6. <body>
    7. <?
    8. include("classes/phpcrawler.class.php");
    9. include("classes/phpcrawlerutils.class.php"); >?
    10. class myCrawler extends phpcrawler {
    11. function handlePageData($page_data) {
    12. // your code, do something with the array $page_data
    13. // that contains the page/file-information
    14. }
    15. }
    16. $crawler = &new MyCrawler();
    17. $crawler->setURL("www.foo.com");
    18. $crawler->addReceiveContentType("/text/html/");
    19. // ...
    20. $crawler->go();
    21. <?php
    22. // It may take a whils to crawl a site ...
    23. set_time_limit(10000);
    24. // inculde class-files
    25. include("classes/phpcrawler.class.php");
    26. include("classes/phpcrawlerutils.class.php");
    27. // Extend the class and override handlePageData()-method
    28. class myCrawler extends phpcrawler {
    29. function handlePageData($page_data) {
    30. // Here comes your code.
    31. // Do whatever you want with the information given in the
    32. // Array $page_data about a page or file that the crawler actually found.
    33. // See complete list of elements the array will contain in the
    34. // class-refenence.
    35. // This is just a simple example.
    36. // Print the URL of the actual requested page or file
    37. echo "Page requested: ".$page_data[url]."<br>";
    38. // Print the first line of the header the server sent (HTTP-status)
    39. echo "Status: ".strtok($page_data[header], "
    40. ")."<br>";
    41. // Print the referer
    42. echo "Referer-page: ".$page_data[referer_url]."<br>";
    43. // Print if the content was be recieved or not
    44. if ($page_data[received]==true)
    45. echo "Content received: ".$page_data[bytes_received]." bytes";
    46. else
    47. echo "Content not received";
    48. // ...
    49. // Now you should do something with the content of the actual
    50. // received page or file ($page_data[source]), we skip it in this example
    51. echo "<br><br>";
    52. flush();
    53. }
    54. }
    55. // Now, create an instance of the class, set the behaviour
    56. // of the crawler (see class-reference for more methods)
    57. // and start the crawling-process.
    58. $crawler = &new MyCrawler();
    59. // URL to crawl
    60. $crawler->setURL("www.php.net");
    61. // Only receive content of files with content-type "text/html"
    62. // (regular expression, preg)
    63. $crawler->addReceiveContentType("/text/html/");
    64. // Ignore links to pictures, dont even request pictures
    65. // (preg_match)
    66. $crawler->addNonFollowMatch("/.(jpg|gif|png)$/ i");
    67. // Store and send cookie-data like a browser does
    68. $crawler->setCookieHandling(true);
    69. // Set the traffic-limit to 1 MB (in bytes,
    70. // for testing we dont want to "suck" the whole site)
    71. $crawler->setTrafficLimit(1000 * 1024);
    72. // Thats enough, now here we go
    73. $crawler->go();
    74. // At the end, after the process is finished, we print a short
    75. // report (see method getReport() for more information)
    76. $report = $crawler->getReport();
    77. echo "Summery:<br>";
    78. if ($report[traffic_limit_reached]==true)
    79. echo "Traffic-limit reached <br>";
    80. echo "Links followed: ".$report[links_followed]."<br>";
    81. echo "Files received: ".$report[files_received]."<br>";
    82. echo "Bytes received: ".$report[bytes_received]."<br>";
    83. ?>
    Alles anzeigen


    Ist das so alles richtig? Gibt es auch Beispiel Seiten für das Such-Sricpt ?

    Vielen Dank! :rolleyes: