Zoekfunctie met highlighting vernaggelt htmlarea input

Pagina: 1
Acties:

  • RoRoo
  • Registratie: Mei 2001
  • Laatst online: 23-04 15:52

RoRoo

Certified Prutser

Topicstarter
Hey,

Ik heb een tijdje geleden voor een site een zoekmachine gebouwd die uiteindelijk de pages ook highlight.

maar nu het probleem. De content wordt opgebouwd dmv htmlarea. (HTML in mysql databeest dus).

Zoek ik bijv. op info dan krijg ik dit resultaat:
code:
1
<a class="link" href="mailto:<span style="background-color:#F87F0F>info</span>@domein.nl" target="_blank"><span style="background-color:#F87F0F">info</span>@domein.nl</a> </span>


Dit is dus niet fijn aangezien de linkjes dan niet meer werken omdat hij mijn <a href= verkloot.

Is dit op een of andere manier te omzeilen zonder html te verliezen bij de weergave? Of moet ik htmlarea verlaten en overstappen op mijn oude ubb parser? Liever niet dat laatste aangezien klant makkelijk tekst moet kunnen opmaken.

Tips plies.. :)

It's not DNS. There's no way it's DNS. It was DNS. --The Sysadmin haiku


  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 05-05 08:13
<a href="http://blaat"><B style="color:black;background-color:#ffff66">click here</B></a>

zo doet google het

edit: ow, de mailto: doet 'em ook, moet je een regexp gebruiken zodat die het enkel bij de text doet, en niet in de link zelf...

[ Voor 51% gewijzigd door Mayco op 30-03-2005 15:29 ]


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-05 08:08

Janoz

Moderator Devschuur®

!litemod

Zorg dat je alleen delen aanpast die buiten een tag staan en niet de tekst tussen de < en >. Je zoeker wordt nog veel mooier als je nu op href zoekt ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • RoRoo
  • Registratie: Mei 2001
  • Laatst online: 23-04 15:52

RoRoo

Certified Prutser

Topicstarter
Janoz schreef op woensdag 30 maart 2005 @ 15:47:
Zorg dat je alleen delen aanpast die buiten een tag staan en niet de tekst tussen de < en >. Je zoeker wordt nog veel mooier als je nu op href zoekt ;).
dat is dus mijn probleem :) hoe pas ik die sjit an.

Kheb nu:
code:
1
    $msg = eregi_replace($_GET['highlight'],"<span style=\"background-color:#F87F0F\">".$_GET['highlight']."</span>",$msg);


dus daar moet ik een pregreplace van maken? maar hoe zeg ik dus doe wel woord 1 maar niet <woord 2>
:?

Beetje knullig van mij.. kweetut sorry

Ik hebt em gefunden!
code:
1
$msg = preg_replace("/($searchword)(?=[^>]*<)/i", "<span style=\"background-color:#F87F0F\">$1</span>", $msg);

en zowaar.. behold!! it works :)

[ Voor 21% gewijzigd door RoRoo op 30-03-2005 16:39 ]

It's not DNS. There's no way it's DNS. It was DNS. --The Sysadmin haiku


Verwijderd

Je moet een look-ahead assertion gebruiken om te kijken of de match in een tag zit.

/spuit 11
De link naar codebase die Skaah geeft gebruikt dus zo'n look-ahead assertion...

[ Voor 37% gewijzigd door Verwijderd op 31-03-2005 14:10 ]

Pagina: 1