Ik probeer met preg_replace bepaalde woorden te markeren. Dit doe ik met de volgende functie.
$search is de string woorden die gesplit zijn door een spatie. Later splits ik die in apparte woorden $keywords.
Als ik op een woord zoek en ik zoek daarachteraan nog op 'on' dan vervant hij het 'on' van de font die hij bij voorgaande woorden heeft neergezet.
Dus als ik zoek op bijvoorbeeld: 'forum on'
Dan zet hij in de text:
blablabla <f<font style="background: gray">on</font>t style="background: gray">forum</f<font style="background: gray">on</font>t> blabla
Hoe kan ik verhelpen dat hij niet ook gaat zoeken op de al vervangen delen?
Ik hoop dat het probleem duidelijk is.
PHP:
1
2
3
4
5
6
7
8
9
10
| function mark_words($search, $text) { $keywords = split(" ", $search); for ($ctr = 0; $keywords[$ctr] != NULL; $ctr ++) { $pattern[$ctr] = "#(.*?)($keywords[$ctr])(.*?)#si"; $replace[$ctr] = '\1<font style="background-color: gray">\2</font>\3'; } return preg_replace($pattern, $replace, $text); } |
$search is de string woorden die gesplit zijn door een spatie. Later splits ik die in apparte woorden $keywords.
Als ik op een woord zoek en ik zoek daarachteraan nog op 'on' dan vervant hij het 'on' van de font die hij bij voorgaande woorden heeft neergezet.
Dus als ik zoek op bijvoorbeeld: 'forum on'
Dan zet hij in de text:
blablabla <f<font style="background: gray">on</font>t style="background: gray">forum</f<font style="background: gray">on</font>t> blabla
Hoe kan ik verhelpen dat hij niet ook gaat zoeken op de al vervangen delen?
Ik hoop dat het probleem duidelijk is.