[?] Highlight gezocht woord op pagina...?

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Ik heb een pagina met VEEL content. (tekst).

Nu wil ik eigenlijk op een simpele manier een zoek optie maken. (Geen db etc.)

Was benieuwd of ik op de een of andere manier kan zorgen dat als je in een textfield een woord invoerd en dat zoekt, je dan alle keren dat dat woord op de pagina voorkomt het woord met een opvallende style ziet.
Een soort dynamische style dus? :?

Iemand een ID?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Met of zonder een pagina reload? Met of zonder serverside scripting?

Wat heb je en wat kun je gebruiken? Het is misschien met javascript wel mogelijk, maar dan zal het waarschijnlijk alleen in IE werken.

Waarom wil je dit? Er is toch ook zoiets als CTRL-F ?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Met of zonder een pagina reload?
Ja, als het moet.

Met of zonder serverside scripting?
PHP ook mogelijk?

Geen java.

Idd zo iets als ctrl-F. Maar dan moet je gelijk alle woorden op de pagina zien ipv op next zoeken... en vind het zo knullig om naar Ctrl-F te verwijzen om te zoeken...

Verwijderd

Met php is het niet zo moeilijk
PHP:
1
2
3
4
5
<?
$content = "Hier de content. Bla bla bla";
$woord="Bla";
$content = eregi_replace($woord, "<h1><blink><font color=\"red\">" . $woord . "</font></blink></h1>", $content);
?>

Nou worden alle Bla's rood enzo.
Als het hoofdlettergevoelig moet zijn, dan moet je eregi_replace wijzigen in ereg_replace

Suc7

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
$content = "Hier de content. Bla bla bla";

Dit word dus wel VEEL hè... maar dat geeft geen probleem dan. Zo lang er maar geen " inzitten. Toch?

$woord="Bla";

Dan nog ff een formpje maken dat het gezochte woord opstuurt als 'woord'.
That's it? :9

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 16-09 21:52
Op maandag 05 november 2001 09:44 schreef Victorio het volgende:
$content = "Hier de content. Bla bla bla";

Dit word dus wel VEEL hè... maar dat geeft geen probleem dan. Zo lang er maar geen " inzitten. Toch?

$woord="Bla";

Dan nog ff een formpje maken dat het gezochte woord opstuurt als 'woord'.
That's it? :9
ja, dacht 't wel.

Verbouwing


Verwijderd

Ja zo moet het ja.....
Laat ff weten als het werkt

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Hmmm heb het nog niet aan de praat...
Kmoet nu naar college.
Tot vanmiddag! ;)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 05 november 2001 09:44 schreef Victorio het volgende:
$content = "Hier de content. Bla bla bla";

Dit word dus wel VEEL hè... maar dat geeft geen probleem dan. Zo lang er maar geen " inzitten. Toch?
$content=file("filenaampje.txt");

geen last van " e.d. dan.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Je kunt ook dit doen:
code:
1
2
3
4
5
$content <<< END

Zet hier alles neer wat je maar kunt verzinnen, ook " e.d.

END;

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020

KolNedra

...

Je wilt dus een tekst zoeken op de pagina waar de "input" <input type="text" name="trefwoord"> form zich bevindt?
Het formulier moet je POSTEN naar de pagina waar je zoekt .

Je moet dus daarvoor wel de pagina reloaden, en je moet alle tekst (HTML gecodeerd) die in die PHP pagina staat omzetten naar PHP echoes..
Dus:
<font face="Verdana" size="12" color="#000000">Dit is een klein voorbeeld</font>

naar
PHP:
1
2
3
<?
echo "<font face='Verdana' size='12' color='#000000'>Dit is een klein voorbeeld</font>";
?>

Dus $tekst is alles waarin je wilt zoeken (dus binnenin je body van je HTML document

En dan kan je al deze HTML naar PHP gecodeerde regels in je
$tekst identifier zetten:
PHP:
1
2
3
4
5
6
7
8
<?
 
if ($trefwoord) {
 $tekst = "<body ...> ... </body>"; 
 $tekst = eregi_replace($trefwoord, "<blink><font color=\"red\">" . $trefwoord . "</font></blink>", 
  echo $tekst;
}
?>

Of:
Gebruik gewoon mySQL

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Vergeet al het bovenstaande en kijk hierzo:

http://www.w3.org/TR/REC-CSS2/selector.html
code:
1
2
3
4
5
6
7
8
p.special:before
{
  content: "$jouwwoord";
}
p.special
{
  color: #0099ff;
}

CSS rulez *D

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 05 november 2001 11:48 schreef dennisdotcom het volgende:
CSS rulez *D
Ik zou toch echt die content: "$jouwwoord"; veranderen door : content: "<?php echo $jouwwoord ?>";

:+

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020

KolNedra

...

Ja duh,
maar ik heb zo dit gemaakt (geen verstand van CSS)
Maar 't werkt niet:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
</head>
<style TYPE="text/css">
p.special:before
{
content: "test";
}
p.special
{
color: #0099ff;
}
</style>
<body>
<p>Dit is een simpele test regel om te testen ! </p>
</body>
</html>

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
<p class = 'special'> ?

  • KolNedra
  • Registratie: September 2001
  • Laatst online: 18-04-2020

KolNedra

...

Oeps owja ;)

::: flickr.com/kolnedra ::: Nikon D80 + Sigma 18-200mm f/3.5-6.3 DC + Sigma 10-20mm f/4-5.6 EX DC HSM


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Op maandag 05 november 2001 11:53 schreef dusty het volgende:
Ik zou toch echt die content: "$jouwwoord"; veranderen door : content: "<?php echo $jouwwoord ?>";

:+
Een vervelend rotjochie ben jij toch ook :7 :+ ;)

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Op maandag 05 november 2001 11:57 schreef KolNedra het volgende:
Ja duh,
maar ik heb zo dit gemaakt (geen verstand van CSS)
Maar 't werkt niet:
Je moet ook wel een CSS2 compatible browser gebruiken. Dat is dus Netscape of Internet Explorer, beiden vanaf versie 6 of Mozilla vanaf versie 0.9.x .

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op maandag 05 november 2001 11:48 schreef dennisdotcom het volgende:
Vergeet al het bovenstaande en kijk hierzo:

http://www.w3.org/TR/REC-CSS2/selector.html
code:
1
2
3
4
5
6
7
8
p.special:before
{
  content: "$jouwwoord";
}
p.special
{
  color: #0099ff;
}

CSS rulez *D
Jammer maar helaas, wat dit doet, is aan het begin van iedere <P class="special"> het woord $jouwwoord zetten, en de kleur van de hele <P class="special"> lichtblauw maken...

...misschien kan het wel met behulp van CSS, maar dus niet op deze manier.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Op maandag 05 november 2001 12:50 schreef Ericston het volgende:
...misschien kan het wel met behulp van CSS, maar dus niet op deze manier.
Je hebt hartstikke gelijk |:(
Maar, als je nou in die 2e CSS-rule ook dat zinnetje "content" zet, werkt het alsnog als het goed is. :Y)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op maandag 05 november 2001 12:56 schreef dennisdotcom het volgende:

[..]

Je hebt hartstikke gelijk |:(
Maar, als je nou in die 2e CSS-rule ook dat zinnetje "content" zet, werkt het alsnog als het goed is. :Y)
Het is niet goed: http://members.home.nl/ericston/csspattern.html

  • Tim
  • Registratie: Mei 2000
  • Laatst online: 23-07 15:18

Tim

Die PHP scriptjes zullen ook niet echt perfect werken, want als ik dan ga zoeken op bijv 'br', dan gaat er iets mis.. :)

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op maandag 05 november 2001 13:10 schreef Timpie2000 het volgende:
Die PHP scriptjes zullen ook niet echt perfect werken, want als ik dan ga zoeken op bijv 'br', dan gaat er iets mis.. :)
betere reguliere expressie maken ;)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Misschien kan hier iets mee gedaan worden:
http://www.siteexperts.com/tips/styles/ts40/page3.asp

En dit werkt wel:
[php<html>
<head>
<script>
function hilite(mijntext) {
str = mijntext.innerHTML;
if ( str.match(/<?=$jouwwoord?>/gi) )
return "red";
}
</script>
<style>
P { color: expression(hilite(this)) }
</style>
</head>
<body>
<p>Dit is een simpele test regel om te en !</p>
<p>Dit is een simpele regel om te en !</p>
<p>Dit is een simpele regel om te en !</p>
<p>Dit is een simpele regel om te Testen!</p>
</body>
</html>[/php]
Veel succes ermee. :)

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Hmmz, ik mag mijn vorige bericht niet editen, en ik mag hier ook geen nieuw bericht posten. Vrij irritant...

...dan maar bericht quoten.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?
<html>
<head>
<script>
function hilite(mijntext) {
    str = mijntext.innerHTML;
    if ( str.match(/<?=$jouwwoord?>/gi) )
        return "red";
}
</script>
<style>
P { color: expression(hilite(this)) }
</style>
</head>
<body>
<p>Dit is een simpele test regel om te en !</p>
<p>Dit is een simpele regel om te en !</p>
<p>Dit is een simpele regel om te en !</p>
<p>Dit is een simpele regel om te Testen!</p>
</body>
</html>
?>

Veel succes ermee. :)

--edit--
Oh ja, en vergeet de eerste en de laatste PHP tag.

Verwijderd

Okee jongens dit is leuk en aardig, ik heb dit ook ooit eens gedaan.... maar pasop! Als ik nou bijvorbeeld de letter a highlight dan word <a href="..." helemaal verneukt!

Keep that in mind

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op maandag 05 november 2001 12:11 schreef dennisdotcom het volgende:

[..]

Je moet ook wel een CSS2 compatible browser gebruiken. Dat is dus Netscape of Internet Explorer, beiden vanaf versie 6 of Mozilla vanaf versie 0.9.x .
en zo elimineer je 80% van de bezoekers van de gemiddelde site ;) :+

"You're only as good, as what you did last week."


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:34
Op maandag 05 november 2001 13:03 schreef Ericston het volgende:
Het is niet goed: http://members.home.nl/ericston/csspattern.html
Je doet het ook niet goed. Je moet én de :before én de gewone dinges erin stoppen.
Op maandag 05 november 2001 15:07 schreef oh,when? het volgende:
en zo elimineer je 80% van de bezoekers van de gemiddelde site ;) :+
Voel je je buitengesloten? :+

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Ik snap er geen fuk meer van? Is de php manier op het begin genoemd nou goed of fout? Heeft iemand al een werkend voorbeeld?

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
<form name=mix method=post action="?pagina=mix">
<b>Zoeken naar drank:</b><br>
<input type=text name=trefwoord size=10 class=searchform>  <a class="bars" href="javascript: document.mix.submitGo</a>
</form>
PHP:
1
2
3
4
5
6
7
8
9
10
<?
 if ($trefwoord) { 
$tekst = "
<b>Almond Joy</b><br>
29,5 ml kokosrum, 14,8 ml Amaretto, 14,8 ml White creme de cacao 59 ml Slagroom - Vul de shaker voor de helft met ijs - 
Voeg de ingredienten toe en schud goed - Zeef in een cocktail glas en serveer!<br>
";  
$tekst = eregi_replace($trefwoord, "<blink><font color=\"red\">" . $trefwoord . "</font></blink>",   echo $tekst;
}
?>

Parse error... echo klopt niet toch?

  • Limhes
  • Registratie: Oktober 2001
  • Laatst online: 19-08 19:06
PHP:
1
2
3
4
5
6
7
8
9
10
<?
 if ($trefwoord) { 
$tekst = "
<b>Almond Joy</b><br>
29,5 ml kokosrum, 14,8 ml Amaretto, 14,8 ml White creme de cacao 59 ml Slagroom - Vul de shaker voor de helft met ijs - 
Voeg de ingredienten toe en schud goed - Zeef in een cocktail glas en serveer!<br>
";  
$tekst = eregi_replace($trefwoord, "<blink><font color=\"red\">" . $trefwoord . "</font></blink>", $tekst); // hier moest de echo weg en een sluit-haakje
}
?>

twee foutjes

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op maandag 05 november 2001 16:47 schreef Victorio het volgende:
Werkt!

http://130.89.224.89/~victorio/php/index.php?pagina=mix

:9
Niet echt goed dus.. zoek maar eens op 'b' om eens wat te noemen. :)

Hier staat nog wel een voorbeeldje hoe dat anders zou kunnen: [topic=120380]

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Op maandag 05 november 2001 18:01 schreef Onno het volgende:

[..]

Niet echt goed dus.. zoek maar eens op 'b' om eens wat te noemen. :)

Hier staat nog wel een voorbeeldje hoe dat anders zou kunnen: [topic=120380]
KOEL! ;)
Hmmm. Kga maar eens wat sleutelen...
(Overigens is deze pagina vooral voor mezelf bedoeld... ;) )

Verwijderd

Hoe is je script uiteindelijk geworden?

Ik vind dit namelijk wl interessant :)

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Dit is nu m'n script, maar wil de bug genoemd hierboven nog wel eruit hebben. Morgen weer een dag... ;)

<form name=mix method=post action="?pagina=mix">
<b>Zoeken naar drank:</b><br>
<input type=text name=trefwoord size=10 class=searchform>  <a class="bars" href="javascript: document.mix.submit();">Go</a>
</form>
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
 
$tekst = "
blabla regels voor de verhouding van gin en droge vermouth waaruit deze drank bestaat. Drie delen gin op en de rest van je sjit...    
";  
if ($trefwoord) { 
$tekst = eregi_replace($trefwoord, "<blink><font color=\"red\">" . $trefwoord . "</font></blink>", $tekst);
echo "$tekst";
}
else {
echo ("$tekst");
}
?>

Verwijderd

PHP:
1
2
3
4
5
6
7
8
<?
if ($trefwoord) { 

$tekst = preg_replace("|($trefwoord)(?![^<]*>)|i","<font color=\"red\">$trefwoord</font>",$tekst);
echo "$tekst";}

else {echo ("$tekst");}
?>

dit is hem met de bug eruit Heb ik ook maar van dat ene topic hoor, maar wel handig dit scriptje :)

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Werkt erg goed nu, maar...
het zoeken is nu niet case sencitive, moet ook zo blijven, maar hij meot niet de letter gaan veranderen bij het tonen.
Als ik zoek op 'bacardi', worden alle 'Bacardi' rood gekleurd en de B een b... dus zie ik een rode 'bacardi'...
Kan ik dit tegen gaan? :?

http://130.89.224.89/~victorio/php/index.php?pagina=mix

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
PHP:
1
2
3
4
5
6
7
8
9
<?
if ($trefwoord)
{ 
    $tekst = preg_replace("|($trefwoord)(?![^<]*>)|i","<font color=\"red\">\\1</font>",$tekst);
    echo "$tekst";
}
else
    echo "$tekst";
?>

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op dinsdag 06 november 2001 00:04 schreef marcusk:
een stukje code waar ik een flauwe opmerking over ga maken
mmm, laat ik eens kijken of er een nul voorkomt in de tekst, even het trefwoord "0" invoeren
;)

Today's subliminal thought is:


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 06 november 2001 01:30 schreef Annie het volgende:
mmm, laat ik eens kijken of er een nul voorkomt in de tekst, even het trefwoord "0" invoeren
;)
't is gewoon een kopie van BeNNiS' code hoor, alleen $trefwoord vervangen door \\1 :)

maargoed, voor de miereneukers:
code:
1
2
if (isset($trefwoord))
// enz :)

  • Victorio
  • Registratie: Januari 2001
  • Laatst online: 01-02-2024
Ik snap deze laatste 2 posts niet. Als ik op 0 zoek gebeurt er niets hoor. :?
\\1 is toch gewoon goed?

  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
als je op 0 zoekt geeft if ($trefwoord) false, dus wordt er niets gehighlight. niet dat het veel uitmaakt, want wie zoekt nou op '0' :? ;)

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op maandag 05 november 2001 16:18 schreef dennisdotcom het volgende:

Voel je je buitengesloten? :+
kga wel naar een interesantere site.. >:)

"You're only as good, as what you did last week."

Pagina: 1