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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
problem med replace samt regex
Fra : Christian M. Nielsen


Dato : 01-09-04 17:00

Jeg vil gerne have fremhævet noget tekst på min side. Den tekst der skal
fremhæves kommer fra et søgefelt.

Jeg har prøvet med replace, men når jeg skal fremhæve den fundne tekst med
fed, så er der problemer med " "

først er der replace delen, det giver denne fejlmeddelelse

Microsoft VBScript compilation (0x800A03EE)
Expected ')'
/web5/www/seek.asp, line 35, column 75
ArticleReplace = Replace(oRsMainArticle("ArticleData"), strSeek,
"<strong>"strSeek"</strong>", 1, -1, 1)
--------------------------------------------------------------------------^


Hvis jeg bruger regex funktionen, så udskifter den søgeordet med $1 (med fed
skrift type). Jeg har fundet regex omtalt her:

<URL:
http://groups.google.com/groups?q=g:thl2713461051d&dq=&hl=en&lr=&ie=UTF-8&newwindow=1&safe=off&client=lgtech-kb&selm=c6ear4%24fji%241%40sunsite.dk >

Koden jeg har forsøgt med.

<% DIM ArticleReplace, ArticleReplace2, strSeek, regex
strSeek = Request.Form("seek")

ArticleReplace = Replace(oRsMainArticle("ArticleData"), strSeek,
"<strong>"strSeek"</strong>", 1, -1, 1)

Response.Write ArticleReplace
Response.Write "<br><br><br>"

ArticleReplace2 = oRsMainArticle("ArticleData") ' <- fundne tekst
Set regex = New RegExp
regex.Pattern = strSeek ' <- søgeordet
regex.IgnoreCase = True
regex.Global = True
Response.Write regex.Replace(ArticleReplace2, "<strong>$1</strong>")

%>

Jeg er tilfreds med 1 løsning, men vil da gerne vide hvordan begge virker.
--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.




 
 
Christian M. Nielsen (01-09-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 01-09-04 17:05


"Christian M. Nielsen" <look.for.it@my.webpage> wrote in message
news:4135f1f2$0$25961$ba624c82@nntp03.dk.telia.net...

> Response.Write regex.Replace(ArticleReplace2, "<strong>$1</strong>")

skal skiftes ud med nedenstående for at virke (dog skiftes søgeord ud så det
vises på samme møde som der er søgt, dvs store og små bogstaver skrives som
i søgemåden.)

Response.Write regex.Replace(ArticleReplace2,
"<strong>"&strSeek&"</strong>")



--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



Jens Gyldenkærne Cla~ (02-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-09-04 10:26

Christian M. Nielsen skrev:

>> Response.Write regex.Replace(ArticleReplace2,
>> "<strong>$1</strong>")
>
> skal skiftes ud med nedenstående for at virke

Nej! - så udnytter man slet ikke styrken ved Regex. Grunden til at
ovenstående ikke virker, er at du ikke har defineret dit søgeord
som en gruppe. Det gøres ved at sætte paranteser om et udtryk - på
den måde kan man referere til det fundne i parantesen med $N (hvor
N er et heltal svarende til det nummer parantesen har i udtrykket).

Se i øvrigt mit andet svar for en fungerende løsning.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian M. Nielsen (02-09-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 02-09-04 08:50


> Jeg har prøvet med replace, men når jeg skal fremhæve den fundne tekst med
> fed, så er der problemer med " "

> ArticleReplace = Replace(oRsMainArticle("ArticleData"), strSeek,
> "<strong>"strSeek"</strong>", 1, -1, 1)

Hvis man tilføjer en ekstra linie og retter lidt i ovenstående så virker det
som det skal.

strSeek2 = "<strong>"&strSeek&"</strong>"
ArticleReplace = Replace(oRsMainArticle("ArticleData"), strSeek, strSeek2,
1, -1, 1)

Hvilken af de 2 metoder er den bedste at bruge og er der noget man skal være
opmærksom på?
--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



Jens Gyldenkærne Cla~ (02-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-09-04 10:24

Christian M. Nielsen skrev:

> Hvilken af de 2 metoder er den bedste at bruge og er der noget
> man skal være opmærksom på?

Regex-metoden er klart at foretrække (hvis man bruger den rigtigt).

Her er et par forskelle på de to metoder:

a) Versalering (store/små bogstaver)
Regex-metoden kan erstatte teksten uden at ændre på versaleringen -
det er ikke muligt med replace.

b) Undgå erstatning i koder.
Regex-metoden kan laves så der ikke erstattes tekst inde i html-
koder. Hvis den tekst der skal erstattes indeholder koder, kan det
give alvorlige fejl at bruge normal replace.
Prøv fx at se hvordan replacemetoden vil behandle en søgning på
"Bo" i følgende kodestump:

<div class="box">Mads og Bo er gode venner</div>

=>

<div class="<strong>Bo</strong>x">Mads og <strong>Bo</strong> er
gode venner</div>


Hvis du kigger en lille måneds tid tilbage i gruppen, har der
faktisk været en funktion der er klar til at bruge. Den
understøtter i øvrigt også flere samtidige søgeord.

Du kan finde tråden her: <http://kortlink.dk/acy>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian M. Nielsen (02-09-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 02-09-04 17:33

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns955873EA6C7D1jcdmfdk@gyrosmod.dtext.news.tele.dk...
> Hvis du kigger en lille måneds tid tilbage i gruppen, har der
> faktisk været en funktion der er klar til at bruge. Den
> understøtter i øvrigt også flere samtidige søgeord.
>
> Du kan finde tråden her: <http://kortlink.dk/acy>.

Mange tak for linket. Jeg har set lidt på funktionen, men forstår ikke
hvordan jeg skal bruge den.

De forudsætninger den skal bruge er:

1) et søgeord der skal markeres med bold, her kaldet "strSeek"
2) Den tekst der skal søges på, kommer fra et recordset, her kaldet
"oRs("ArticleData")"

Hvordan får jeg udskrevet teksten efter den har været igennem regex?

--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



Jens Gyldenkærne Cla~ (02-09-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 02-09-04 20:25

Christian M. Nielsen skrev:

> 1) et søgeord der skal markeres med bold, her kaldet "strSeek"

Det er andet argument til funktionen (navngivet aWords i
funktionen)

> 2) Den tekst der skal søges på, kommer fra et recordset, her
> kaldet "oRs("ArticleData")"

Det er første argument (S)


> Hvordan får jeg udskrevet teksten efter den har været igennem
> regex?

Det foregår på samme måde som med de funktioner du har afprøvet.
Gem det resultat funktionen returnerer i en variabel og udskriv den
eller udskriv funktionsresultatet direkte.

Med mellemvariabel:
strSeek = Request.Form("seek")
ArticleReplace = markWord(oRsMainArticle("ArticleData"), strSeek)
Response.write ArticleReplace


Uden variabel:
strSeek = Request.Form("seek")
Response.write markWord(oRsMainArticle("ArticleData"), strSeek)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian M. Nielsen (03-09-2004)
Kommentar
Fra : Christian M. Nielsen


Dato : 03-09-04 08:44

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns9558D9CFD5E9Cjcdmfdk@gyrosmod.cybercity.dk...
>
> Det foregår på samme måde som med de funktioner du har afprøvet.
> Gem det resultat funktionen returnerer i en variabel og udskriv den
> eller udskriv funktionsresultatet direkte.
>
> Med mellemvariabel:
> strSeek= request.querystring("seek")
> ArticleReplace = markWord(oRsMainArticle("ArticleData"), strSeek)
> Response.write ArticleReplace

Det virker helt perfekt, men det vidste du jo godt i forvejen da du jo selv
har lavet funktionen.

Du nævner på linket til funktionen

<citat> Bemærk at man godt kan søge på flere ord ad gangen (de skal så
adskilles med |): </citat>

Til andre interesserede kan jeg her nævne at hvis man får ordene fra en
querystring, så skal den se således ud (skift selv xxx, yyy, ud med de
ord, der er søgt på).

seek.asp?articleid=319&seek=xxx|yyy|

--

Mvh Christian http://www.cmnielsen.dk
What capital has 164 letters in its name? See my web page to find out.
Nyeste Artikel : Crenicichla compressiceps.
http://cmnielsen.dk/crenicichla.htm
The scary thing about looking for truth is that you might find it.



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

Månedens bedste
Årets bedste
Sidste års bedste