/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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




Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408946
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste