Avatar billede sthen Nybegynder
04. maj 2003 - 23:27 Der er 14 kommentarer og
1 løsning

Resultat fra søgning med fed

Har i øjeblikket en søgefunktion som i og for sig virker udmærket. Den hedder:

if ($soeg!="") {
echo "Din forespørgsel på <b>".$soeg."</b> giver følgende resultater:<br><br>";

include ("../connect/connect.php");
($result = mysql_query("select * from arrangementer where tekst like '%$soeg%' order by dato ")) || die(mysql_error());
while($data = mysql_fetch_array($result)) {

$data['tekst'] = str_replace($soeg,'<b>'.$soeg.'</b>',$data['tekst']);

echo "<a href=\"".$_SERVER['PHP_SELF']."?tid=".$data['dato']."\">".date("j/n - Y k\l G:i",$data['dato'])."<br>".$data['type']."<br>".$data['tekst']."<br>".$data['tekst2']."</a>";
}}

Som det ses, vil jeg gerne have ordet fra søgningen til at fremstå med fed i søgeresultatet, og det virker da også rimeligt, indtil f.eks. søgeordet er med lille begyndelsesbogstav og resultatordet er med stort begyndelsesbogstav, eller omvendt. Så sker der ingen markering med fed i outputtet.

Med andre ord - kan det klares - og hvordan ??
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:29 #1
Avatar billede a_eriksen Nybegynder
04. maj 2003 - 23:29 #2
<br> er linieskift

<b>tekst</b> er fed
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:29 #3
..nå ja, på den anden side - den er nok ikke i din udgave af PHP .. sorry
Avatar billede schaefner Juniormester
04. maj 2003 - 23:30 #4
$data['tekst'] = eregi_replace($soeg,"<b>$soeg</b>",$data['tekst']);
Avatar billede roenving Novice
04. maj 2003 - 23:31 #5
Jeg tror du kan klare det med et par str_replace, hvor du ændrer $soeg til at være med lille/stort efter behov
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:31 #6
Du bør normalt kunne bruge
$data['tekst'] = eregi_replace($soeg,'<b>'.$soeg.'</b>',$data['tekst']);
Avatar billede a_eriksen Nybegynder
04. maj 2003 - 23:31 #7
Hov, kiggede lige forkert :)
Avatar billede schaefner Juniormester
04. maj 2003 - 23:35 #8
og det var et svar.
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:35 #9
Det går dog galt, hvis $soeg indeholder nogle af de tegn,
der er "magiske" i regulære udtryk. Den helt korrekte
løsning er desværre en smule mere besværlig:

$soeg2 = preg_quote($soeg);
$data['tekst'] = preg_replace("/($soeg2)/im,'<b>\1</b>',$data['tekst']);
Avatar billede sthen Nybegynder
04. maj 2003 - 23:39 #10
>> erikjacobsen

Det virker ikke helt som jeg ønsker.
Hvis outputtet på søgningen er med stort begyndelsesbogstav (d.v.s. at ordet figurerer i databasen med stort begyndelsesbogstav), så skal det EFTER at det er blevet omkranset af <b> og </b> stadig være med stort begyndelsesbogstav.

Konverteringen til fed skal ske UANSET om der søges på ordet med store eller små bogstaver, og outputtet skal fremstå, som indtastet i databasen.
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:39 #11
Rettet for småfejl:

$soeg2 = preg_quote($soeg);
$data['tekst'] = preg_replace("/($soeg2)/im",'<b>\1</b>',$data['tekst']);
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:41 #12
Dit sidste ønske mener jeg er opfyldt. Det er det faktisk ord
i teksten der bliver fed - ikke ordet der søges på. Altså
søges på Mandag, og der står mandag i teksten bliver det til
<b>mandag</b>
Avatar billede sthen Nybegynder
04. maj 2003 - 23:42 #13
OK - prøver lige igen
Avatar billede sthen Nybegynder
04. maj 2003 - 23:46 #14
Undskyld og godt ord igen
Tak for hjælpen - det dur - selvfølgelig havde jeg nær sagt
Avatar billede erikjacobsen Ekspert
04. maj 2003 - 23:48 #15
Fint nok - men ingen selvfølge; jeg havde ikke lige fået det testet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester