SkÃ¥ne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Forum   Kalender   Søg
MhonArc Dato: [Date Prev] [Kronologisk oversigt] [Date Next]   TrÃ¥d: [Date Prev] [Oversigt trÃ¥de] [Date Next]   MhonArc
 

Re: [PERL] urler



On Sun, 12 Dec 1999 sslug@sslug wrote:

> Jeg har brug for en smart måde hvorved jeg kan oversætte en vilkårlig
> streng til en streng som kun består af tegnene [A-Za-z0-9], meget
> gerne så den oversatte strengs læsbarhed bevares så godt som muligt og
> så strengen kan oversættes tilbage til startværdien igen. (Det er
> urler der skal oversættes til 'sikre' og tilnærmelsesvis pæne filnavne)

Det letteste er nok noget i stil med:

$url =~ s#([%/;])# sprintf("%%%02X", ord($1))#ge;

som erstatter alle de tegn du mener skal være forbudte (her %, / og ;)
med procenttegn og hexværdien (ligesom standard URL encoding). Der er nok
en funktion til at gøre det allerede et sted i Perl modulerne :)

ord('karakter') returner tegnets ASCII værdi og sprintf med %X formattet
printer hex (%% printer %)


Tilbage igen:

$url =~ s/%(..)/chr(hex($1))/ge;

.. matcher to karakter efter %, hex oversætter fra hex til ordinal værdi
og chr laver om fra et tal til en karakter.

s# varianten gør at man ikke behøver at sætte \ foran / som man skulle
hvis man skrev s/../../




-- 
==============================================================================
Erwin Andreasen   Herlev, Denmark <sslug@sslug>          UNIX System Programmer
<URL:http://www.andreasen.org>              <*>         (not speaking for) DDE
==============================================================================





 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret 2005-08-10, klokken 19:52
Denne side vedligeholdes af MHonArc .