Avatar billede thomas_b Nybegynder
02. marts 2008 - 12:02 Der er 30 kommentarer og
1 løsning

Uddrag af url-streng

Hej...

Nogle der kan bikse en kode frem til mig, til hvordan jeg for en special del ud af en streng..?

Elsempel...:
http://www.google.dk/search?hl=da&rlz=1G1_____DADK248&q=hoteller&meta=lr%3Dlang_da

Laves om til strengen: "hoteller"
Men den skal også kunne tage denne:
http://www.google.dk/search?hl=da&rlz=1G1_____DADK248&meta=lr%3Dlang_da&q=hoteller

og:

http://www.google.dk/search?q=hoteller&hl=da&rlz=1G1_____DADK248&meta=lr%3Dlang_da

Så, både midt inde i en streng, for enden og i starten... og værdien foran "hoteller" (q=) skal være variabel...
Avatar billede roenving Novice
03. marts 2008 - 16:02 #1
(\?|&)q=([^&\b]+?)(&|\b)

-- måtte q være noget andet ?-)
Avatar billede thomas_b Nybegynder
03. marts 2008 - 18:14 #2
Jeg har problemer medtidligere script mht. og implantere strengen sammen med patten...! kan du hjælpe mig der også ?
Avatar billede thomas_b Nybegynder
11. marts 2008 - 22:57 #3
roenving> Kan du se hvorfor dette ikke "kotter" strengen ?

<%
Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = "(\?|&)q=([^&\b]+?)(&|\b)"
%>
<%=regEx.replace(f_url,"$1")%>

Den giver bare hele strengen der kommer via f_url!!!
Avatar billede roenving Novice
12. marts 2008 - 14:09 #4
Hvad med $2 (evt. \2 ?-)
Avatar billede thomas_b Nybegynder
12. marts 2008 - 17:24 #5
men den sletter den del jeg skal have ud... det er den omvente løsning jeg ønsker... :)
Avatar billede nielle Nybegynder
12. marts 2008 - 18:04 #6
Sådan?

<%
Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = "[?&]q=([^&]+?)"
%>
<%=regEx.replace(f_url, "$1")%>
Avatar billede thomas_b Nybegynder
12. marts 2008 - 19:23 #7
nielle> Den gør ikke det den skal... den finder og beholder godt nok ordet jeg søger men sletter ikke resten

eksempel ved denne:
http://www.google.dk/search?hl=da&rlz=1G1_____DADK248&meta=lr%3Dlang_da&q=hoteller

bliver til:
http://www.google.dk/search?hl=da&rlz=1G1_____DADK248&meta=lr%3Dlang_dahoteller
Avatar billede nielle Nybegynder
12. marts 2008 - 22:10 #8
Det burde denne så til gengæld gøre:

regEx.Pattern = "^.*[?&]q=([^&]+?).*$"
Avatar billede thomas_b Nybegynder
12. marts 2008 - 22:46 #9
Ja, og så ikke helt... den kommer kun med første bogstav af ordet "hoteller"
Avatar billede nielle Nybegynder
12. marts 2008 - 22:56 #10
Tja, jeg ved heller ikke hvorfor at det ?-tegn ikke blev fjernet...

regEx.Pattern = "^.*[?&]q=([^&]+).*$"
Avatar billede thomas_b Nybegynder
12. marts 2008 - 23:08 #11
Hvis man skal have flere kriterier...

Hvordan gør man det?
Mit forsøg her, virker ikke:
Set regEx = New RegExp

regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = "^.*[?&]q=([^&]+).*$"
regEx.Pattern = "^.*[?&]su=([^&]+).*$"
Avatar billede nielle Nybegynder
13. marts 2008 - 06:59 #12
Nej, selvfølgeligt ikke for pattern nr. 2 erstatter jo pattern nr. 1 i den kode.

Hvad vil du gerne have ud? Skal det blive til een samlet streng, lkller skal du have to separate strenge?
Avatar billede thomas_b Nybegynder
13. marts 2008 - 15:54 #13
Den skal bare tjekke efter flere kriterier fx. q= og su= osv... så var det bare hvordan den skulle strikkes sammen...
Avatar billede nielle Nybegynder
13. marts 2008 - 16:36 #14
Jo, men du startede med et øsnke om at få teksten "hoteller" ud. Nu vil du så have to værdier ud. Skal de kombineres i en tekst og i givet falde hvordan skal det så se ud? Eller vil du have dem ud som to separate ord?
Avatar billede thomas_b Nybegynder
13. marts 2008 - 20:02 #15
Nu skal jeg lige havde forklaret det ordenligt...

Det forholder sig sådan at mit sorerings-system ligger i et loop af et databaseudtræk...

Hvor forskellige strenge bliver hentet der kan være i første streng f.eks. være denne:
http://www.google.dk/search?hl=da&rlz=1G1_____DADK248&meta=lr%3Dlang_da&q=hoteller

og en anden streng kan være:
http://search.jubii.dk/cgi-bin/pursuit?pag=3&query=vaerelser

Og så skal den både tjekke efter "q=" og "query="

Håber det er forståeligt... :)
Avatar billede nielle Nybegynder
13. marts 2008 - 20:04 #16
Ja da. Men du har endnu ikke svaret på mit spørgsmål:

Hvad vil du gerne have ud? Skal det blive til een samlet streng, eller skal du have to separate strenge?
Avatar billede thomas_b Nybegynder
13. marts 2008 - 20:21 #17
Jeg tror det er en enkelt streng jeg søger... :)
Avatar billede nielle Nybegynder
14. marts 2008 - 20:49 #18
Det er ikke helt klart hvordan det skal se ud hvis den hitter på begge to:

<%
Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True

regEx.Pattern = "^.*[?&]q=([^&]+).*$"
res1 = regEx.replace(f_url, "$1")

regEx.Pattern = "^.*[?&]query=([^&]+).*$"
res2 = regEx.replace(f_url, "$1")

res = res1 & "," & res2
%>
Avatar billede thomas_b Nybegynder
16. marts 2008 - 23:21 #19
Hej nielle...

Dette virker ikke...:

Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True

regEx.Pattern = "^.*[?&]q=([^&]+).*$"
res1 = regEx.replace(f_url, "$1")
regEx.Pattern = "^.*[?&]query=([^&]+).*$"
res2 = regEx.replace(f_url, "$1")
f_url1 = res1 & res2

Den giver kun resultet fra det første patten: "q="
Avatar billede thomas_b Nybegynder
17. marts 2008 - 00:02 #20
Jeg har fundet ud af det.. :)

Men tror du har hjulpet mig med et andet script der forkortede en URL... men ikke helt præsis...

regEx.Pattern = "(http://.*?/).*"
f_url12 = regEx.replace(f_url, "$1")

Den forkorter f.eks.
http://www.google.dk/search?sourceid=navclient&....
til
http://www.google.dk/

Men desvære ikke denne...:
http://search.jubii.dk/cgi-bin/pursuit?pag=2&....
til
http://www.jubii.dk/

så kan du samtidlig lægge et svar... så lukker vi denne... :)
Avatar billede nielle Nybegynder
17. marts 2008 - 06:58 #21
> Den giver kun resultet fra det første patten: "q="

Den burde 100 % virke som den skal. Hvis den ikke gør, så er det fordi at der er et eller andet som er anderledes i forhold til de oplysninger du har givet os.

Hvis du kunne give nogle eksempler på hvad der sker, så vil jeg da gerne kigge mere på den. :^)


> Men desvære ikke denne...:

Nej, den laver ikke:

http://search.jubii.dk/cgi-bin/pursuit?pag=2&....

om til:

http://www.jubii.dk/

men den forkorter den i hvertfald om til:

http://search.jubii.dk/

Man kan sagtens lave en løsning som altid sætter et www i starten. Men hvorfor? Der er faktisk slet ingen garanti for at url'et med et "www" i starten overhovedet vil fungere generelt. Det er op til den enkelte webserver om den skal være konfiguereret til at svare på underdomænet "www", og der findes faktisk dem som ikke gør det.


> så kan du samtidlig lægge et svar... så lukker vi denne... :)

Jeg smider gerne et svar, men skal vi ikke hellere se at få løst denne her?
Avatar billede thomas_b Nybegynder
17. marts 2008 - 14:05 #22
Hej... Havde ordnet: 16/03-2008 23:21:58

Men den ændre ikke
http://search.jubii.dk/cgi-bin/pursuit?pag=2&....

til http://search.jubii.dk/ - (som også er ok... behøver ikke være www.jubii.dk)

Den kommer slet ikke med noget resultat på jubii-strengen... den viser kun http:// ikke andet...
Avatar billede nielle Nybegynder
17. marts 2008 - 18:28 #23
Det lyder meget mystisk. Kan du vise din kode?
Avatar billede thomas_b Nybegynder
17. marts 2008 - 21:24 #24
Den kommer efter de andre koder vi har fundet hertil... og så denne til slut i koden...

regEx.Pattern = "(http://.*?/).*"
f_url12 = regEx.replace(f_url, "$1")
Håber det er det du mente...
Avatar billede nielle Nybegynder
17. marts 2008 - 21:42 #25
Kan du ikke vise hele din kode og så hvcordan du giver den input.
Avatar billede thomas_b Nybegynder
17. marts 2008 - 22:04 #26
Det virker fint... hvis strengen bare kommer fra google... men her for du noget mere kode...:


f_url = rs("url")
f_url = replace(f_url,"http://www.","")
f_url = "http://"&f_url

Set regEx = New RegExp
regEx.Global = True
regEx.IgnoreCase = True

regEx.Pattern = "^.*[?&]q=([^&]+).*$"
res1 = regEx.replace(f_url, "$1")
if instr(res1, "http://")>0 then
res1=""
end if

regEx.Pattern = "^.*[?&]p=([^&]+).*$"
res2 = regEx.replace(f_url, "$1")
if instr(res2, "http://")>0 then
res2=""
end if

regEx.Pattern = "^.*[?&]sog=([^&]+).*$"
res3 = regEx.replace(f_url, "$1")
if instr(res3, "http://")>0 then
res3=""
end if

regEx.Pattern = "^.*[?&]query=([^&]+).*$"
res4 = regEx.replace(f_url, "$1")
if instr(res4, "http://")>0 then
res4=""
end if

regEx.Pattern = "^.*[?&]search=([^&]+).*$"
res5 = regEx.replace(f_url, "$1")
if instr(res5, "http://")>0 then
res5=""
end if

regEx.Pattern = "^.*[?&]words=([^&]+).*$"
res6 = regEx.replace(f_url, "$1")
if instr(res6, "http://")>0 then
res6=""
end if

regEx.Pattern = "^.*[?&]keyword=([^&]+).*$"
res7 = regEx.replace(f_url, "$1")
if instr(res7, "http://")>0 then
res7=""
end if

regEx.Pattern = "^.*[?&]find=([^&]+).*$"
res8 = regEx.replace(f_url, "$1")
if instr(res8, "http://")>0 then
res8=""
end if

regEx.Pattern = "^.*[?&]search_word=([^&]+).*$"
res9 = regEx.replace(f_url, "$1")
if instr(res9, "http://")>0 then
res9=""
end if

regEx.Pattern = "^.*[?&]searchterm=([^&]+).*$"
res10 = regEx.replace(f_url, "$1")
if instr(res10, "http://")>0 then
res10=""
end if

regEx.Pattern = "^.*[?&]searchtxt=([^&]+).*$"
res11 = regEx.replace(f_url, "$1")
if instr(res11, "http://")>0 then
res11=""
end if

f_url1 = res1 & res2 & res3 & res4 & res5 & res6 & res7 & res8 & res9 & res10 & res11
f_url1 = replace(f_url1,"%c3%86","Æ")
f_url1 = replace(f_url1,"%c3%98","Ø")
f_url1 = replace(f_url1,"%c3%85","Å")
f_url1 = replace(f_url1,"%c3%a6","æ")
f_url1 = replace(f_url1,"%c3%b8","ø")
f_url1 = replace(f_url1,"%c3%a5","å")

f_url1 = replace(f_url1,"%c3%A6","æ")
f_url1 = replace(f_url1,"%c3%B8","ø")
f_url1 = replace(f_url1,"%c3%A5","å")

f_url1 = replace(f_url1,"%C3%86","Æ")
f_url1 = replace(f_url1,"%C3%98","Ø")
f_url1 = replace(f_url1,"%C3%85","Å")
f_url1 = replace(f_url1,"%C3%a6","æ")
f_url1 = replace(f_url1,"%C3%b8","ø")
f_url1 = replace(f_url1,"%C3%a5","å")

f_url1 = replace(f_url1,"%C3%A6","æ")
f_url1 = replace(f_url1,"%C3%B8","ø")
f_url1 = replace(f_url1,"%C3%A5","å")

f_url1 = replace(f_url1,"%20"," ")

if instr(f_url1, "cache")>0 then
f_url1=""
end if

if f_url1<>"" then
regEx.Pattern = "(http://.*?/).*"
f_url12 = regEx.replace(f_url, "$1")
end if
Avatar billede nielle Nybegynder
17. marts 2008 - 22:21 #27
Den kommer jo også til at de "alternativ" ud når den først har været igennem denne:

f_url = rs("url")
f_url = replace(f_url,"http://www.","")
f_url = "http://"&f_url

Så er:

http://search.jubii.dk/cgi-bin/pursuit?pag=2&....

- jo ændret til:

http://http://search.jubii.dk/cgi-bin/pursuit?pag=2&....
Avatar billede thomas_b Nybegynder
17. marts 2008 - 22:42 #28
Hmm manglede vist lige f_url = replace(f_url,"http://","") - ups...

nu for jeg så... f.eks.:
http://google.dk/
http://search.jubii.dk/

Men kan man på en måde ikke hive det jubii ud...! men så det stadig kan klare alle andre domæner ?
Avatar billede nielle Nybegynder
18. marts 2008 - 07:53 #29
Du kan altså ikke bare fjerne subdomains på den måde og stadig have nogen garenti for at url'et fortsat virker bagefter.

Det er *ikke* en internet-lov at en webserver skal svare på www-subdomænet og der er masser af steder hvor at de ikke gør det.
Avatar billede thomas_b Nybegynder
18. marts 2008 - 16:25 #30
Det er bare iorden... :) Jeg ser lige om det er så nødvendigt... :)
1.000 tak for hjælpen... :)
Avatar billede nielle Nybegynder
18. marts 2008 - 17:35 #31
Takker for point :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB