login  Naam:   Wachtwoord: 
Registreer je!
 Forum

zoekwoorden markeren (Opgelost)

Offline luchtpost - 28/05/2008 14:26 (laatste wijziging 28/05/2008 14:29)
Avatar van luchtpostPHP interesse Beste sitemasters,
Graag zou ik gezochte woorden op mijn site in de weblogentries markeren. Hoe doe ik dat?
mvg

15 antwoorden

Gesponsorde links
Offline Ontani - 28/05/2008 14:30
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Dit kan je zowel met javascript als php doen, bekijk wie de referer is en kijk naar de url, als ze van google komen kan je via de url zien op wat ze gezocht hebben en daaruit de woorden die ze gezocht hebben filteren om te markeren op je website.
Offline luchtpost - 28/05/2008 14:32 (laatste wijziging 28/05/2008 14:32)
Avatar van luchtpost PHP interesse Nee nee, er wordt gezocht via een scriptje op mijn site, niet via google.
Offline Stijn - 28/05/2008 14:32
Avatar van Stijn PHP expert Geef een parameter mee in de URL, bv: ?highlight=php+zoeken. Je explode dan alles op het plus teken en vervangt ieder woord van de array in de tekst met een kleur. Zo zou het eruit kunnen zien:

  1. <?
  2. $words = explode('+' , $_GET['highlight']);
  3.  
  4. foreach( $words as $word ) {
  5. $tekst = str_replace($word , '<b><font color="red">' . $word . '</font></b>' , $tekst);
  6. }
Offline luchtpost - 28/05/2008 14:41
Avatar van luchtpost PHP interesse Dankuwel! Maar hoe maak ik die str_replace ongevoelig voor hoofdletters?
Offline Martijn - 28/05/2008 14:47
Avatar van Martijn Crew PHP preg_replace() 
Offline luchtpost - 28/05/2008 14:50 (laatste wijziging 28/05/2008 15:01)
Avatar van luchtpost PHP interesse preg_replace marcheert niet.

EDIT: Met eregi_replace worden de woorden met hoofdletter ook vervangen maar krijgen ze dus ook een kleine letter.
Is er een manier om de hoofdletter te behouden, maar het woord toch rood te maken?
Offline Joost - 28/05/2008 15:58 (laatste wijziging 28/05/2008 15:58)
Avatar van Joost PHP expert Deze kan wel;

  1. <?
  2. $words = explode('+' , $_GET['highlight']);
  3.  
  4. foreach( $words as $word ) {
  5. $tekst = str_replace(strtolower($word) , '<b><font color="red">' . $word . '</font></b>' , $tekst);
  6.  
  7. }
  8.  
  9. ?>

strtolower zet alles in kleine letters 
Offline luchtpost - 28/05/2008 16:47 (laatste wijziging 28/05/2008 17:05)
Avatar van luchtpost PHP interesse Dat laatste begrijp ik niet helemaal.
De bedoeling is om woorden die beginnen met een hoofdletter (bv Sitemasters) niet te vervangen door sitemasters als er gezocht is op sitemasters met een kleine letter.
Dus dat woorden met een hoofdletter behouden blijven.
Offline compudoc - 28/05/2008 17:13 (laatste wijziging 28/05/2008 17:14)
Avatar van compudoc PHP beginner misschien str_ireplace ipv str_replace (volgensmij is ireplace namelijk hoofdletter ongevoelig)

  1. <?
  2. $words = explode('+' , $_GET['highlight']);
  3.  
  4. foreach( $words as $word ) {
  5. $tekst = str_ireplace($word , '<b><font color="red">' . $word . '</font></b>' , $tekst);
  6. }
  7. ?>


str_ireplace, werkt alleen bij PHP5+
Offline luchtpost - 28/05/2008 17:21 (laatste wijziging 28/05/2008 17:23)
Avatar van luchtpost PHP interesse nee, dat geeft hetzelfde resultaat als eregi_replace
en ik heb php 5

ik bedoel dus gewoon dat sitemasters wordt vervangen door sitemasters (maar dan in 't rood) en Sitemasters door Sitemasters (maar dan in 't rood)
Offline Rik - 28/05/2008 17:32 (laatste wijziging 28/05/2008 17:54)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Er is op de vorige bladzijde besproken dat dat niet werkt.

Volgens mij bedoelt de TS dit:
  1. $string = 'Op Sitemasters leer je over PHP en Javascript';
  2. $words = array('sitemasters', 'php', 'javascript');
  3. foreach ($words as $word) {
  4. $string = preg_replace('/' . preg_quote($word) . '/i', '<span style="color: red">$0</span>', $string);
  5. }
  6. echo $string;


Edit:
Kleine fix om de regexp iets korter te maken.
Offline Martijn - 28/05/2008 17:37
Avatar van Martijn Crew PHP er staat als je iets lager kijkt een hoofdletter gevoeloze oplossing ;)
Offline Rik - 28/05/2008 17:56
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Daarvoor is die i in m'n regexp, om hem hoofdletter ongevoelig te maken.

Ik snap niet hoe jij aan de status PHP expert komt!   
Offline yetti4 - 28/05/2008 18:06
Avatar van yetti4 JS interesse
Boukefalos schreef:
Ik snap niet hoe jij aan de status PHP expert komt!   


Lekker veel onnuttige topics posten zoals dit 
Offline luchtpost - 28/05/2008 19:17
Avatar van luchtpost PHP interesse Dankuwel Boukefalos!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.214s