Avatar billede topsite Nybegynder
20. september 2003 - 14:39 Der er 20 kommentarer og
1 løsning

Find ord i tekst og marker

Jeg er igang med at lave en søgeside.

Først har jeg lavet en query med like '%$string%' .. osv.
og det virker perfekt..

Men der er lidt problemer med outputtet

1. Outputtet kommer i HTML, er der en som har et lille replace script som fjerner alle <*>-htmltags

2. Hvis nu man søger efter ex. Meditation, så ville jeg gerne have den markede ordet "medidation" i teksten
men også at den klipper det ud, dvs.

Hvis nu HELE teksten er som følgende:

Her finder du artikler, undervisningsmaterialer, kompilationer og e-bøger med inspiration til din personlige og åndelige udvikling, samt visioner til et samfund baseret på humanistiske, holistiske og åndelige værdier. Materialerne kan anvendes til alt fra dybdeborende studier til generel orientering om det esoteriske livssyn. Stoffet vil løbende blive udvidet.

og jeg søger på "humanistiske" så skal den gøre som følgende:

personlige og åndelige udvikling, samt visioner til et samfund baseret på [humanistiske], holistiske og åndelige værdier. Materialerne kan

Altså tage ordet (det første i teksten) og markerer det, og tage ex. 100 tegn før, og efter teksten med.

Kan det lade sig gøre ?
Avatar billede Slettet bruger
20. september 2003 - 14:44 #1
Du er nok nødt til selv at bygge din replace op med de koder du har:
Tekst=Replace(Tekst,"<b>", "")
Tekst=Replace(Tekst,"</b>", "")
o.s.v.
Avatar billede topsite Nybegynder
20. september 2003 - 14:51 #2
Selvom jeg ikke styre ereg_replace, så lykkedes det aligevel at klare 1'eren selv. Nu mangler jeg bare 2'eren ! som jeg ikke kan har en ide til! :/

$hmtl = ereg_replace("<([^>]+)>", "", $html);
Avatar billede hmortensen Nybegynder
20. september 2003 - 17:05 #3
Måske noget af det her kan bruges...

<?php
$str = "Her finder du artikler, undervisningsmaterialer, kompilationer og e-bøger med inspiration til din personlige og åndelige udvikling, samt visioner til et samfund baseret på humanistiske, holistiske og åndelige værdier. Materialerne kan anvendes til alt fra dybdeborende studier til generel orientering om det esoteriske livssyn. Stoffet vil løbende blive udvidet.";
if ($highlight != "0") {
$mark = $highlight;
$str = str_replace("$mark","<em class=\"codemarkup\">$mark</em>",$str);
}
?>
<html>
<head>
<style type="text/css">
.codemarkup {background:#FFFF40;font-style:normal}
</style>
</head>
<body>
<form action="highlight.php">
Søgeord:<br>
<input type="text" name="highlight"><br>
<input type="submit">
</form>
<?php
echo $str;
?>
</body>
</html>
Avatar billede topsite Nybegynder
20. september 2003 - 17:25 #4
Hej Hindu_skp,

problemet er at de tekster den skal søge i ER MEGET LANGE Derfor vil jeg gerne have den klipper af, rundt om første søgeord. Dvs.at den tager (100tegn) HIGHLITE (100tegn)...

god weekend
daniel bahl
Avatar billede hmortensen Nybegynder
20. september 2003 - 17:53 #5
Det tror jeg ik jeg kan hitte ud af at lave
Avatar billede TRoXa Novice
20. september 2003 - 17:55 #6
jeg er i gang :)
Avatar billede topsite Nybegynder
20. september 2003 - 18:08 #7
Nice Troxa ;) glæder mig til at se dit udkast!
Avatar billede TRoXa Novice
20. september 2003 - 18:21 #8
Håber det er det du søgte :) ellers siger du bare til så retter jeg lidt i det :)

<?

function henttekst($tekst,$soegeord)
{

    $tekst = strip_tags($tekst,''); // fjerner alle tags
    $seekordpos = strpos($tekst,$soegeord);
    if ($seekordpos >= 100) { $nytekst = substr($tekst,$seekordpos-100,100); } else { $nytekst = substr($tekst,0,$seekordpos); }
    $resttekst = substr($tekst,$seekordpos+strlen($soegeord),strlen($tekst)-$seekordpos-strlen($soegeord));
    $nytekst .= "<b>$soegeord</b>";
    if (strlen($resttekst) >= 100) { $nytekst .= substr($resttekst,0,100); } else { $nytekst .= substr($resttekst,0,strlen($resttekst)); }

    return $nytekst;
}

echo henttekst("jeg hedder bonanza og det er der ikke så meget at gøre ved","bonanza");

?>
Avatar billede TRoXa Novice
20. september 2003 - 18:24 #9
dvs fx

echo henttekst($html,"Det ord du søger evt som variabel $soegeord");
Avatar billede topsite Nybegynder
20. september 2003 - 18:32 #10
Hej Troxa, det ser nice ud - men der lige en fejl, jeg håber du kan rette. Hvis det samme ord er flere gange i teksten, så laver den fejl!

Fatal error: Cannot redeclare henttekst() (previously declared in /dedicated/myweb/html/search.php:127) in /dedicated/myweb/html/search.php on line 127
Avatar billede TRoXa Novice
20. september 2003 - 18:36 #11
prøver lige :)
Avatar billede TRoXa Novice
20. september 2003 - 18:39 #12
hvis jeg sætter den ind får jeg ingen fejl .. Har du smidt funktionen ind i din while løkke ved søgning igennem alle rows ? for den skal stå udenfor.. smid evt din kode her, så jeg kan tilpasse den, eller send den til troxa@troxa.dk hvis det er noget du ik vil vise til andre.
Avatar billede topsite Nybegynder
20. september 2003 - 18:47 #13
Ok! Jeg havde lige fået lagt funktionen i lykken - sorry min fejl!

Kan du lave så den ikke cutter ordene af ?
ellers ser det jo smukt ud
Avatar billede TRoXa Novice
20. september 2003 - 18:53 #14
ja det gætter jeg på :) kigger lige på det :)
Avatar billede TRoXa Novice
20. september 2003 - 20:05 #15
vil du gerne have så den tager ordet med der er cuttet eller fjerner ordet der er cuttet ?
Avatar billede topsite Nybegynder
20. september 2003 - 20:24 #16
tager det med
Avatar billede TRoXa Novice
20. september 2003 - 20:57 #17
øv håbede lige du ville have cut da det var nemmere, men prøver lige at ordne det så :P
Avatar billede topsite Nybegynder
20. september 2003 - 21:00 #18
Så tag den anden ;) det var bare sårn et 50/50 svar jeg lavede
Avatar billede TRoXa Novice
20. september 2003 - 21:01 #19
okay :)
Avatar billede TRoXa Novice
20. september 2003 - 21:16 #20
sådan :)

function henttekst($tekst,$soegeord)
{
    $tekst = strip_tags($tekst,''); // fjerner alle tags
    $seekordpos = strpos($tekst,$soegeord);
    if ($seekordpos >= 100) { $nytekst = substr($tekst,$seekordpos-100,100); $nytekst = substr($nytekst,strpos($nytekst," ")+1,100-strpos($nytekst," ")); } else { $nytekst = substr($tekst,0,$seekordpos); }

    $resttekst = substr($tekst,$seekordpos+strlen($soegeord),strlen($tekst)-$seekordpos-strlen($soegeord));
    $nytekst .= "<b>$soegeord</b>";
    if (strlen($resttekst) >= 100) { $temptekst .= substr($resttekst,0,100); $nytekst .= substr($temptekst,0,strrpos($temptekst," ")); } else { $nytekst .= substr($resttekst,0,strlen($resttekst)); }
    return $nytekst;
}
Avatar billede Slettet bruger
11. november 2003 - 22:28 #21
Lukketid?
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