login  Naam:   Wachtwoord: 
Registreer je!
 Forum

eregi_replace

Offline SvenP - 16/02/2006 13:07
Avatar van SvenPPHP interesse ik ben met een zoekfuncie bezig voor mijn site, allemaal heel leuk en aardig...
maar ik wil ook dat de text waarna gezocht word in de results underlined word ofzo..
nu is dit geen probleem, simpele eregi_replace erin gooien..
maar er zitten ook links in die text..
die eregi replace veranderen de links ook...
word bijvoorbeeld zo: http://www.<u>hoi</u>doei.nl ofzo..
en dit is nou net niet de bedoeling.
is er een manier om dit tegen te gaan?
bijvoorbeeld dat alles wat tussen "<" en ">" staat word genegeerd?

8 antwoorden

Gesponsorde links
Offline Thomas - 16/02/2006 13:12
Avatar van Thomas Moderator Elementen tussen <> apart behandelen of een parser schrijven.
Offline SvenP - 16/02/2006 13:14 (laatste wijziging 16/02/2006 13:25)
Avatar van SvenP PHP interesse hoe?

zou iemand mij mischien hierbij willen helpen?
Offline Thomas - 16/02/2006 13:51
Avatar van Thomas Moderator 1. vervang alle hyperlinks in je text door een "marker" die aangeeft waar de link terug gezet moet worden, en sla tegelijkertijd de link op.

Maak bijv. van <a href="http://www.blaat.com">link_text</a> [hyperlink]link_text[/hyperlink] en sla de link http://www.blaat.com op in een array.

2. Loop door je aangepaste text heen en pas alles behalve de ... binnen [...][/...] aan (je schiet hier dus niet zoveel mee op ten op zichte van de <a href="...">...</a>-variant. Het is misschien een goed idee om meteen met deze "pseudo-HTML" te werken in plaats van gewone HTML toe te staan als dat mogelijk is).

3. Zet de links weer terug.

Het alternatief is een parser bouwen.
Offline SvenP - 16/02/2006 13:57
Avatar van SvenP PHP interesse sorry hoor, maar nu snap ik er nog niks van..
zou je mss een voorbeeld willen posten?
Offline timo - 16/02/2006 14:17
Avatar van timo PHP ver gevorderde een voorbeeld :s:s:s:s:s een parser bouwen is een heel stuk moeilijker hoor....
Offline Richard - 16/02/2006 14:45
Avatar van Richard Crew algemeen ik heb dit probleem ook al op vinTage's vijversite gezien, dit is met een _goede_ regular expression makkelijk op te lossen:

  1. <?php
  2. $text = '<a href="blabla">texta</a>';
  3. $search = (isset ($_GET['search']) && !empty ($_GET['search'])) ? $_GET['search'] : '';
  4.  
  5. if (!empty ($search))
  6. {
  7. $text = preg_replace ('~(?!<.*?)(' . preg_quote ($search) . ')(?![^<>]*?>)~', '<u>\1</u>', $text);
  8. }
  9. ?>
Offline vinTage - 16/02/2006 14:45 (laatste wijziging 16/02/2006 14:47)
Avatar van vinTage Nieuw lid Zelf gemaakt 

maak je linkjes zoiets als


  1. //highligt dinges
  2. if(isset($_GET['gezocht']))
  3. {
  4. $gevraagd = htmlentities(mysql_real_escape_string($_GET['gezocht']));
  5. $content = str_replace($gevraagd, '<span style="color: black; background-color: pink;">'.$gevraagd.'</span><a name="'.$gevraagd.'"></a>', $content);
  6. }



edit@ jexus, das mn pa zn site hoor, ik heb hem alleen gemaakt 
Offline SvenP - 16/02/2006 15:15
Avatar van SvenP PHP interesse dankzei jexus is mijn probleem nu goed opgelost... heel erg bedankt allen voor de moeite....
nu kan ik met het volgende onderdeel beginnen 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s