login  Naam:   Wachtwoord: 
Registreer je!
 Forum

zoeksysteem gezocht

Offline DrB - 05/07/2006 16:22 (laatste wijziging 09/07/2006 15:55)
Avatar van DrBHTML interesse Beste leden,

Ik heb verschillende losse .php pagina's waar tekst op staat. Ik ben op zoek naar een script waar men op zoekwoorden kan zoeken. Heb zelf ook al gezocht maar tot nu toe werkten deze niet. Ik werk dus ook niet met een database.
Weet iemand een werkend script te vinden?

Mvg,

DrB

30 antwoorden

Gesponsorde links
Offline marten - 05/07/2006 19:42
Avatar van marten Beheerder mmmm
dus je hebt allemaal 'vaste' tekst op je pagina die je wilt door zoeken?

Dan moet je eerst kijken of je al die vaste tekst 'zoekbaar' kan maken. Zet al je tekst in een string. (file_get_contents)

Vervolgens kan je met verschillende dingen in die string gaan zoeken. maar dat is het niet het moeilijkste.....

Succes
Offline DrB - 05/07/2006 19:56
Avatar van DrB HTML interesse Hej Marten jij weer hier ;)

Hmm ja dus tekst in string gaan zetten... Is er niet ergens een zoek systeem te vinden? Het is logisch dat de tekst inderdaad zoekbaar gemaakt moet worden. Ik zou niet weten hoe ik vervolgens verder moet.
Offline Rik - 05/07/2006 20:03
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ditzoeksysteem ziet er goed uit:
http://www.cj-d...sitesearch
Offline DrB - 05/07/2006 20:37
Avatar van DrB HTML interesse Bedankt voor je link, alleen werkt de download niet en werkt het systeem volgens mij met een database en de tekst staat niet in een database.
Offline marten - 05/07/2006 20:39
Avatar van marten Beheerder
Citaat:
Ik zou niet weten hoe ik vervolgens verder moet.


Probeer het en kom met je vragen hier weer daar leer je het meest van
Offline DrB - 05/07/2006 20:50
Avatar van DrB HTML interesse Naja ben nog steeds bezig de beginselen van PHP te leren, als ik eerst moet proberen om een begin te maken ben ik over 3 maanden nog bezig 


Ik heb dus gewoon tekst:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed sit amet lacus. Etiam bibendum. Quisque convallis arcu a dui. Ut tincidunt massa eget diam. In a risus eget diam dictum iaculis. Donec fringilla sem non sapien. Aliquam volutpat, libero id elementum lobortis, dolor dui aliquam tortor, nec vehicula est sem et enim. Fusce porta sem non erat. Maecenas gravida orci a lectus.

Opgeslagen als pagina.php

Dan moeten mensen via een zoek formulier kunnen zoeken op bijv het woord Lorem, als deze gevonden worden gaat men naar de desbetreffende pagina.
Offline marten - 05/07/2006 20:53 (laatste wijziging 05/07/2006 20:57)
Avatar van marten Beheerder
  1. <?php
  2.  
  3. $string = file_get_contents('pagina.php');
  4.  
  5. $zoekwoord = 'Lorem';
  6. $resultaat = strpos ($string, $zoekwoord);
  7.  
  8. if($resultaat === FALSE) {
  9. echo 'niet gevonden';
  10. } else {
  11. echo 'gevonden';
  12. }
  13. ?>


Klein voorbeeldje

Offline DrB - 05/07/2006 20:55
Avatar van DrB HTML interesse Hmm ja maar daar ga je al uit van een zoekwoord, bezoekers moeten zelf een zoekwoord in kunnen geven en dan is het de bedoeling dat hij in meerdere pagina's zoekt. Ik zal even kijken of ik met je voorbeeldje verder aan de slag kan. Bedankt iig.
Offline marten - 05/07/2006 20:58
Avatar van marten Beheerder dat is niet zo moeilijk gewoon $zoekwoord = $_POST['zoekwoord'] ofzo

en pagina's kan je wel allemaal uitlezen
Offline DrB - 05/07/2006 21:26 (laatste wijziging 05/07/2006 21:47)
Avatar van DrB HTML interesse Dit script voldoet aardig aan mijn eisen:

  1. <html>
  2. <head>
  3. <title>Zoek in de website</title>
  4. <style>
  5. body, table, tr, td { font-family:arial; font-size: 12; color:darkblue; }
  6.  
  7. a {
  8. color: blue;
  9. }
  10.  
  11. a:hover {
  12. color: darkblue;
  13. }
  14. </style>
  15. </head>
  16. <body>
  17. <div align="left">
  18. <?php
  19. error_reporting(0); // E_ALL voor error reporting aan 0 voor uit
  20. $resultaten=0;
  21.  
  22. echo "<center>";
  23. echo "<form action='",$_SERVER['PHP_SELF'],"' method='GET'>\n";
  24. echo "Zoek binnen deze website:<BR><input type='text' name='q' value='",$_GET['q'],"' size=50>\n";
  25. echo "<input type=submit value='Zoek'>\n</form>\n";
  26.  
  27.  
  28. ###lijst van pagina's
  29. ### geef hier de pagina's op waarin hij moet zoeken
  30. $pagina[]='index.php';
  31. $pagina[]='ssz.php';
  32. $pagina[]='Nederland.php';
  33. $pagina[]='Belgie.php';
  34. $pagina[]='brochure.php';
  35. $pagina[]='publicaties.php';
  36.  
  37.  
  38. if (isset($_GET['q']))
  39. {
  40. echo "<table>\n";
  41. for ($a=0 ; $a < count($pagina) ; $a++)
  42. {
  43. $paginadata[] = file($pagina[$a]);
  44. }
  45.  
  46. for ($i=0 ; $i < count($paginadata) ; $i++)
  47. {
  48. for ($b=0 ; $b < count($paginadata[$i]) ; $b++)
  49. {
  50. if (eregi($_GET['q'],$paginadata[$i][$b]))
  51. {
  52. $zoekres[] = $pagina[$i];
  53. }
  54. }
  55. }
  56.  
  57. if (count($zoekres) > 0)
  58. {
  59. $zoekres2 = array_unique ($zoekres);
  60. }
  61.  
  62. for ($i=0 ; $i < count($zoekres2) ; $i++)
  63. {
  64. if ($zoekres2[$i])
  65. {
  66. $resultaten = $resultaten+1;
  67. echo "<tr><td>$resultaten<td><a href='".$zoekres2[$i]."'>".basename($zoekres2[$i])."</a></tr></td>\n";
  68. }
  69. }
  70.  
  71. echo "<tr><td colspan=2>";
  72.  
  73. if ($resultaten==1)
  74. {
  75. echo "Er is 1 resultaat gevonden";
  76. } else {
  77. echo "Er zijn $resultaten resultaten gevonden";
  78. }
  79. echo "</tr></td>\n</table>";
  80. }
  81. ?></div>
  82. </body>
  83. </html>



Echter wordt het woord niet dikgedrukt of iets dergelijks, is dit gemakkelijk te realiseren?
Offline marten - 05/07/2006 21:55 (laatste wijziging 05/07/2006 21:55)
Avatar van marten Beheerder gewoon [b ] [/b ] er om zetten?

edit
stomme ubb 
Offline DrB - 05/07/2006 21:56 (laatste wijziging 05/07/2006 21:56)
Avatar van DrB HTML interesse Wat bedoel je met die reactie Marten?

//edit ah ok  waar omheen zetten?
Offline letscode - 05/07/2006 21:57
Avatar van letscode HTML beginner Hij bedoelt dat je er < b>....... < /b> om heen moet zetten.(zonder spaties)

Maar in zijn post verknalde de ubb van SiMa het 
Offline DrB - 05/07/2006 21:57
Avatar van DrB HTML interesse Ja ik zag het inderdaad ;) kan gebeuren 
Offline marten - 05/07/2006 22:22
Avatar van marten Beheerder maar beter is nog met css 
Offline DrB - 05/07/2006 22:27
Avatar van DrB HTML interesse Ja maar het resultaat moet dikgedrukt worden... Ik weet van te voren natuurlijk niet welk woord mensen intypen ;)
Offline finduilas - 06/07/2006 08:02
Avatar van finduilas PHP gevorderde
  1. echo "<b>".$_GET['q']."</b>"

Offline DrB - 06/07/2006 09:39 (laatste wijziging 08/07/2006 13:34)
Avatar van DrB HTML interesse Dus:

echo "Zoek binnen deze website:<BR><input type='text' name='q' value='" ,$_GET['q'],"' size=50>\n";

wordt:

echo "Zoek binnen deze website:<BR><input type='text' name='q' value='" ,"<b>".$_GET['q']."</b>","' size=50>\n";

Dat werkt namelijk niet, dan komt er <b> </b> in de zoekbalk te staan. Omdat je dan eigenlijk de value aanpast.
Offline Ibrahim - 08/07/2006 18:45
Avatar van Ibrahim PHP expert je zoekt de plek waar het script de resultaten weergeeft. en daaromheen zet je <b></b>
Offline DrB - 08/07/2006 19:24
Avatar van DrB HTML interesse Ja dat snap ik, maar waar zit dat Ben net bezig met php, vandaar 
Offline Ibrahim - 08/07/2006 19:30 (laatste wijziging 08/07/2006 19:31)
Avatar van Ibrahim PHP expert ik gok op dit:

  1. echo "<tr><td>$resultaten<td><a href='".$zoekres2[$i]."'>".basename($zoekres2[$i])."</a></tr></td>\n";

dus:
  1. echo "<tr><td>$resultaten<td><b><a href='".$zoekres2[$i]."'>".basename($zoekres2[$i])."</a></b></tr></td>\n";


ik raad je aan alle variabelen buiten quotes te zetten in dit script.
dus niet:
echo 'hoi Lid $lidnaam';
maar
echo 'Hoi Lid '.$lidnaam;

snap je ?
Offline DrB - 08/07/2006 19:50 (laatste wijziging 08/07/2006 19:53)
Avatar van DrB HTML interesse Ok ik snap het, wat is de reden dat je het buiten quotes moet zetten? Veiliger, netter? in die eerste gebruik je een punt en in die tweede niet, wat is het verschil?

//edit

Nu geeft die de zoekresultaten weer in de bold stijl, maar ik ben misschien niet duidelijk geweest: als je nu op het woord klikt dat gevonden is, moet het in de tekst waar het staat ook dikgedrukt of gemarkeerd worden, nu gaat hij gewoon naar de pagina toe waar het woord staat en dan moet je zelf maar zoeken waar het ongeveer staat. dit is zeker enkel mogelijk als de tekst in een database staat?
Offline Ibrahim - 08/07/2006 20:16
Avatar van Ibrahim PHP expert met preg_match kun je zoeken naar het woord die word gezocht en dan zo bold maken

PHP.net: preg_match

Citaat:
in die eerste gebruik je een punt en in die tweede niet, wat is het verschil?



die punt is om dingen te verbinden met elkaar. Omdat aan de achterkant niets staat hoef je ook geen verbindingspunt neer te zetten, vandaar.

  1. <?php
  2. $naam = 'Ibrahim';
  3.  
  4. echo 'Mijn naam is:'. $naam; // Mijn naam is Ibrahim
  5. echo 'Mijn naam is:'. $naam.' en ik ben 15 jaar'; // Mijn naam is Ibrahim en ik ben 15 jaar
  6. ?>


Citaat:
wat is de reden dat je het buiten quotes moet zetten? Veiliger, netter?


Het is slordig en bij single quotes(' ') werkt het niet eens.
ook werken arrays/objecten niet behalve als je { } gebruikt

  1. <?php
  2. $var = 'hoi';
  3.  
  4. echo '$var'; // weergeeft: $var
  5. echo "$var"; // weergeeft: hoi
  6. echo $var; // weergeeft: hoi
  7. echo '{$var}'; // weergeeft: {$var}
  8. echo "{$var}"; // weergeeft: hoi
  9. ?>


snap je nu ?
Offline DrB - 08/07/2006 20:28
Avatar van DrB HTML interesse Bedankt voor de uitleg Siliecom Ik snap het nu ja. Ik zou alleen niet weten hoe ik moet beginnen om de preg_match toe te passsen op het zoeksysteem.
Offline Ibrahim - 08/07/2006 22:44 (laatste wijziging 08/07/2006 23:13)
Avatar van Ibrahim PHP expert Allereerst lees je de info op de pagina PHP.net: preg_match.
Dan probeer je wat uit
dan ga je proberen of het werkt op het zoeksysteem.

edit:

als je wilt dat hij alles matched: PHP.net: preg_match_all

edit2:

als je er echt niet uitkomt, zal ik wel even een voorbeeldje maken.
Offline DrB - 09/07/2006 12:41
Avatar van DrB HTML interesse Ik heb alles gelezen, maar toch kom ik er niet uit. Ik weet niet hoe ik het moet toe passen in mijn zoeksysteem. In ieder geval bedankt voor je uitgebreide antwoorden.
Offline Ibrahim - 09/07/2006 14:55 (laatste wijziging 09/07/2006 15:03)
Avatar van Ibrahim PHP expert wat heb je dan geprobeerd en welke fouten ben je tegen gekomen ?

ik heb een klein voorbeeldje gemaakt van hoe je het zou moeten doen. Ik ga eerst even commenten dan zal ik het in plaatscode.be zetten

edit:
ik heb deze voorbeeld gemaakt zodat jij ervan kan leren. Dus niet kopieren en plakken, maar doorlezen en kijken hoe alles werkt...

Klikje
Offline Maarten - 09/07/2006 15:17
Avatar van Maarten Erelid Wat mij betreft kan je hiervoor ook str_replace gebruiken, dat is waarschijnlijk simpeler ook.
Offline DrB - 09/07/2006 16:20 (laatste wijziging 09/07/2006 16:21)
Avatar van DrB HTML interesse Bedankt voor je voorbeeld siliecom14. Als je nu een zoekopdracht geeft dan komt
  1. array(1) {
  2. [0]=>
  3. array(1) {
  4. [0]=>
  5. string(8) "proberen"
  6. }
  7. }


Boven het resultaat te staan toch? Wat wil je hiermee zeggen?

Dus als je een pagina wilt indexeren doe je:

$text = 'file_get_contents('index.php')';

?

Ik begin het wel steeds meer te snappen in ieder geval 
Offline Ibrahim - 09/07/2006 20:36
Avatar van Ibrahim PHP expert @murfy

str_replace heb ik ook gebruikt 

@DrB:

die array is om te debuggen, die kun je dus ook weglaten + de functie dumpen 

om een bestand in een variabele te zetten doe je idd wat jij hebt alleen zonder de ' '
dus niet:
$text = 'file_get_contents('index.php')';
maar:
$text = file_get_contents(index.php);
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.312s