FlexUrlEncoder()

Fragen und Anregungen zum Forum.
Beiträge die Community betreffend
Little John

FlexUrlEncoder()

Beitrag von Little John »

Hallo zusammen,

es nervt andere und mich auch, dass die Forumsoftware best. Zeichen in URLs nicht akzeptiert, die normalerweise Bestandteil von Links sein können ... und die daher auch von PBs eingebauter Routine URLEncoder() nicht codiert werden. Als Abhilfe habe ich selbst eine kleine Codierfunktion geschrieben:

Code: Alles auswählen

EnableExplicit

Procedure.s FlexUrlEncoder (url.s)
   Protected charlist.s = "()"  ; Liste *zusätzlich* zu codierender Zeichen
   Protected i.l, char.s

   url = URLEncoder(url)        ; Das meiste wird schonmal von PB erledigt.
   For i = 1 To Len(charList)
      char = Mid(charlist, i, 1)
      url = ReplaceString(url, char, "%" + Hex(Asc(char)))
   Next
   ProcedureReturn url
EndProcedure

;-- Demo
Debug     URLEncoder("http://wiki.delphigl.com/index.php/Bloom(pseudo-HDR)")
Debug FlexUrlEnCoder("http://wiki.delphigl.com/index.php/Bloom(pseudo-HDR)")
Was waren jetzt nochmal die anderen Zeichen außer (), die hier im Forum in Links codiert werden müssen?

Gruß, Little John
Zuletzt geändert von Little John am 12.08.2008 16:50, insgesamt 1-mal geändert.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Re: FlexUrlEncoder()

Beitrag von AND51 »

Little John hat geschrieben:

Code: Alles auswählen

url = ReplaceString(url, char, "%" + Hex(Asc(char)))
Sooo ist es ja nicht ganz korrekt, hm...? :wink:
Sollte wohl besser vorgenullt werden, wenn nötig:

Code: Alles auswählen

url = ReplaceString(url, char, "%" + RSet(Hex(Asc(char))), 2, "0")
Ach ja und ich würde alle Zeichen codieren, die zu der RegExp-Klasse \W gehören.
Also alle nicht-alphanumerischen Zeichen, auch Leerzeichen.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Little John

Beitrag von Little John »

Bis Du sicher dass diese Dinge nötig sind?? Der eigene Code muss sich doch nur noch um die Zeichen kümmern, die von der eingebauten Funktion URLEncoder() nicht erfasst werden. Das betrifft jedenfalls nicht Leerzeichen -- und wahrcheinlich auch keine Zeichen < $10.

Schreib 'mal lieber welche anderen Zeichen (die aber allgemein im URLs vorkommen dürfen) außer () die Forumssoftware in Links nicht akzeptiert. :D

//edit
Vielleicht sind's auch nur "(" und ")"? Mir ist jetzt wieder eingefallen, dass ein anderes verdächtiges Zeichen welches ich noch im Hinterkopf hatte "ß" war, aber das wird schon von PBs eingebautem URLEncoder() erfasst.

Gruß, Little John
Antworten