|
| highlight søgeord. Fra : Jan Poulsen |
Dato : 10-05-03 12:08 |
|
Hej NG
Jeg bruger følgende kode til at highligte søgeord i en tekst string
foreach ($search_words as $value) {
$highlighted_words[$x] = "xxx";
$x++;
}
$string = str_replace($search_words, $highlighted_words, $string);
eller det er en censur, hvor bestemte ord skal erstattes med x'er.
Det virker bare ikke som jeg ønsker og jeg kan heller ikke få det til at
virker.
Hvis man f.eks. søger stringen igennem for orderet 'ko' vil et ord i
stringen som 'risiko'
give et resultat som 'risixx', og det er ikke lige hvad jeg ønsker. Det skal
altså
kun være hele ord som erstattes...
Nogen som har en ide?
/jan
| |
Jesper Brunholm (10-05-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 10-05-03 13:47 |
|
Jan Poulsen wrote:
> $string = str_replace($search_words, $highlighted_words, $string);
>
> eller det er en censur, hvor bestemte ord skal erstattes med x'er.
>
> Det virker bare ikke som jeg ønsker og jeg kan heller ikke få det til at
> virker.
>
> Hvis man f.eks. søger stringen igennem for orderet 'ko' vil et ord i
> stringen som 'risiko'
> give et resultat som 'risixx', og det er ikke lige hvad jeg ønsker. Det skal
> altså
> kun være hele ord som erstattes...
så må du vel padde dit search med mellemrum i begge ender, så den i
stedet for at søge efter 'ko' søger efter ' ko '.
mvh
Jesper Brunholm
| |
Christian Iversen (10-05-2003)
| Kommentar Fra : Christian Iversen |
Dato : 10-05-03 15:33 |
|
Jesper Brunholm wrote:
> Jan Poulsen wrote:
>> $string = str_replace($search_words, $highlighted_words, $string);
>>
>> eller det er en censur, hvor bestemte ord skal erstattes med x'er.
>>
>> Det virker bare ikke som jeg ønsker og jeg kan heller ikke få det til at
>> virker.
>>
>> Hvis man f.eks. søger stringen igennem for orderet 'ko' vil et ord i
>> stringen som 'risiko'
>> give et resultat som 'risixx', og det er ikke lige hvad jeg ønsker. Det
>> skal altså
>> kun være hele ord som erstattes...
>
> så må du vel padde dit search med mellemrum i begge ender, så den i
> stedet for at søge efter 'ko' søger efter ' ko '.
Det virker ikke i en situation som:
"muuuh siger en ko\nsom regel"
her har "ko" mellemrum til den ene side, men linieskift til den anden.
En bedre idé er nok at bruge regulære udtryk, og matche "\<ko\>"
\< og \> er den tomme streng henholdsvis før og efter hvert ord.
--
M.V.H
Christian Iversen
| |
Peter Brodersen (10-05-2003)
| Kommentar Fra : Peter Brodersen |
Dato : 10-05-03 23:47 |
|
On Sat, 10 May 2003 13:07:50 +0200, "Jan Poulsen" <jp@jumpstart.dk>
wrote:
>$string = str_replace($search_words, $highlighted_words, $string);
Regulære udtryk kan give mulighed for at markere word boundaries. Da
$search_words er et array, deler jeg det lige op undervejs.
$string =
preg_replace('/\b('.preg_quote(explode('|',$search_words)).')\b/','xxx',$string);
--
- Peter Brodersen
| |
Jan Poulsen (12-05-2003)
| Kommentar Fra : Jan Poulsen |
Dato : 12-05-03 05:49 |
|
"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:b9jvh9$rkm$2@dknews.tiscali.dk...
> On Sat, 10 May 2003 13:07:50 +0200, "Jan Poulsen" <jp@jumpstart.dk>
> wrote:
>
> >$string = str_replace($search_words, $highlighted_words, $string);
>
> Regulære udtryk kan give mulighed for at markere word boundaries. Da
> $search_words er et array, deler jeg det lige op undervejs.
>
> $string =
>
preg_replace('/\b('.preg_quote(explode('|',$search_words)).')\b/','xxx',$str
ing);
>
> --
> - Peter Brodersen
hmmm, der sker ikke så meget med brug af
$string =
preg_replace('/\b('.preg_quote(explode('|',$search_words)).')\b/','xxx',$str
ing);
ingen fejl, men heller ikke nogen ændring i $string???
Jeg har prøvet med nogle forskellige preg_replace eksempler, men det er det
samme med
dem alle, ingen resultat... og nu er jeg ikke lige den bedste til
preg_replace sætninger, faktisk
aner jeg ikke hvad alle de tegn man skriver i første parameter betyder?
Skulle sætningen $string =
preg_replace('/\b('.preg_quote(explode('|',$search_words)).')\b/','xxx',$str
ing);
være nok for at erstatte uønskede ord som er i et array $search_words fra
stringen $string?
/jan
| |
|
|