kittlosMedlem sedan sep. 2002205 inlägg Jag har en sökfunktion som jag vill ska presentera resultaten ungefär som google, dvs om jag sökt ordet Coca Cola så ska resultatet se ut ungefär så här:
Titeln på artikeln
"Han var en av de första som provade Coca Cola i deras gäng. Redan som tonåring ville han...
Så jag vill att texten under titeln ska bestå av allt som kommer innan det sökta ordet och närmaste punkt (.) och sen ett bestämt antal tecken efter sökordet.
Går det att få till det på något sätt?
Jag hittar sökresultatet med sql frågan (WHERE text LIKE '%sokord%')
kittlosMedlem sedan sep. 2002205 inlägg Det måste förresten inte börja efter närmaste punkt. Det kan lika bra vara ett fast antal tecken för OCh efter sökordet, så att det blir samma för alla resultat.
AgaithMedlem sedan jan. 2001191 inlägg kolla upp funktionerna substr och strpos för att ta reda på var i innehållet ditt sökord är samt för att välja hur mycket innan och efter som skall användas.
kittlosMedlem sedan sep. 2002205 inlägg toppen. Hur räknar jag antalet bokstäver i sökordet (i variabeln $search) ?
Edit: Jag hittade det. Strlen.
(Hur får man det så fint länkat till php.net?)
kittlosMedlem sedan sep. 2002205 inlägg Okej nu gjorde jag så att den visar ett visst antal tecken före, och efter. Koden:
//----plocka ut texten kring sökresultatet, om sökresultatet finns i "text".
$text_pos = strpos($text,$search);
if($text_pos===FALSE)$show_text="";
else{
$search_length=strlen($search);
$add_value = $search_length+100;
$start_pos = ($text_pos - 50);
$show_text = substr($text,$start_pos,$add_value);
$show_text = str_replace($search,'<font color=\"#CC0000\"><b>'.$search.'</b></font>',$show_text);
}
//-------------------
Det blir dock ganska fult när den kapar mitt i ord. Finns det något bra sätt att känna av efter mellanslag, både i början och i slutet?
AgaithMedlem sedan jan. 2001191 inlägg strstr söker efter första förekomsten av en _nål_ i en höstack (t.ex. ett mellanslag).
Med hjälp av strrev som vänder på strängen borde du nog kunna lösa det lätt.
Kanske inte den snyggaste (bästa) lösningen men det borde nog gå :)