Stuk tekst splitten uit een string (voor zoekmachine)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

19/08/2004 20:21:00
Quote Anchor link
Wil een zoekfunctie maken op mijn website maar weet niet hoe ik het resultaat er uit moet laten zien.

Ik bijvoorbeeld de eerste 30 tekens van de tekst onder of naast de titel weergeven. Maarjah alleen een stukje tekst zegt niets zoveel.

-->> Ik wil graag het stuk tekst echoën waar het woord voorkomt. Hoe kan ik dit doen zonder de complete text op te delen in een array?

**Voorbeelden zijn overal op internet te zien. **Google's zoekresultaten bijvoorbeeld. Of die van phpfreakz.
 
PHP hulp

PHP hulp

15/01/2025 00:00:37
 

19/08/2004 20:37:00
Quote Anchor link
Je zet gewoon de beschrijving, het onderwerp, en het zoekwoord in een tabel. Dan zoek je op het zoekwoord.
 

19/08/2004 21:33:00
Quote Anchor link
Sorry ik kan je niet helemaal volgen.
Ik gebruik nu dit:

--------------------
if(isset($_POST['search'])){
$gSearch = addslashes($_POST['search']);
$gSearch = htmlspecialchars($gSearch);
$select = "SELECT * FROM ".$tbl_maintext." WHERE MATCH (text, title) AGAINST ('$gSearch*' IN BOOLEAN MODE)";
$result = mysql_query($select,$db) or die(mysql_error());
if($result){
while($search = mysql_fetch_assoc($result)){
echo $search['title'], '<br>';
$text = html_entity_decode($search['text']);
$text = stripslashes($text);
$text = substr($text,0,100). "...";

echo '<blockquote>', strip_tags($text), '</blockquote>';
}
}
} else {
?>
<form action="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? //echo $_SERVER['PHP_SELF']; ?>
" method="POST">
<table>
<tr><td>Zoeken op de website</td></tr>
<tr><td>Zoekwoord:<br><input type="text" name="search" title="Zoekwoord" maxlength="50"></td></tr>
<tr><td><input type="submit" value="Zoek"></td></tr>
</table>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?
}
--------------------



Kijk het zoeken lukt wel, maar ik wil de resultaten mooi op rang sorteren en een stukje tekst plaatsen waar het zoekwoord voorkomt.
Check bijvoorbeeld deze screen:
http://www.fckeditor.nl/screen.jpg

Dat moet toch duidelijk zijn?
Degene die weet hoe zou me geweldig kunnen helpen! Alvast bedankt!
 
Elwin - Fratsloos

Elwin - Fratsloos

20/08/2004 11:13:00
Quote Anchor link
Dat heb ik niet (heb nog gezocht.. kon het zo snel niet vinden)... Misschien kan je het uit een bestaand script trekken. Ik heb wel iets anders voor je. Een highlight functie voor je zoekwoorden:

Werkend te zien op http://spacefrog.ath.cx/extra/phphulp/zoeken.php

En hier het script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// Zoeken

// Highlight functie

function highlight_words($text,$zoekwoord)
{

    foreach($zoekwoord as $woord)
    {

      $text = preg_replace("/$woord/i",'<span style="color:red;font-weight:bold;">'.$woord.'</span>',$text );
    }

    return($text);
}


// De tekst
$artikel = "Hier komt dan natuurlijk de rij uit je MySQL tabel";

// Zoekwoorden
$zoekwoord[] = "woord1";
$zoekwoord[] = "woord2";

$resultaat = highlight_words($artikel,$zoekwoord);

echo $resultaat;
?>


Bron van de code: http://forums.devarticles.com/showthread.php?mode=hybrid&t=3420

Elwin
 
Bram Z

Bram Z

20/08/2004 11:50:00
Quote Anchor link
Ik zou ook graag een zoek functie hebben met fuilltext maar hij moet ook werken als er meer dan 50% resultaten zijn ...
 

20/08/2004 11:55:00
Quote Anchor link
Highligthing heb ik.
Ben vanmorgen hele morgen bezig geweest en heb nu dit:

$text = html_entity_decode($search['text']);
$text = stripslashes($text);
$text = strip_tags($text);
$text = strtolower($text); //converteren naar kleine letters
$needle = strlen($gSearch); // lengte woord bepalen
$pos = strpos($text, $gSearch); // positie eerste zoekwoord
$posbegin = $pos - 25; //begin bepalen
if($posbegin < 0) { $posbegin = 0; }
$poseind = $posbegin + '100';
$text = substr($text,$posbegin,$poseind); //string knippen knip(uittext, vanaf, lengte)
$length = strlen($text);
if($length > 100){
$text = substr($text, 0,125);
}
$text = str_highlight($text,$gSearch); //zoekwoord oplichten
echo '</li>';
echo '<blockquote>...', $text, '<br>lente: '.$pos, '<br>posbegin:', $posbegin.'<br>tekst:'.$length.'</blockquote>';
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.