On Fri, 5 Apr 2002, MuTECH wrote: > function CodeUrlPar($p){ > $r=''; > for ($i=0;$i<strlen($p);$i++){ > $c=substr($p,$i,1); > if (($c>='a' && $c<='z') || ($c>='A' && $c<='Z') || ($c>='0' && $c<='9')){ > $r.=$c; > }else{ > $r.='%'.sprintf('%02X',ord($c)); > } > } > return $r; > }
L'une des raisons pour lesquelles je préfère perl est que l'on peut essayer directement en ligne de commande (shell) des trucs comme: ---- Copies tout depuis le premier espace ci dessous felix@medium:~$ perl -w -e ' sub urlenc { $_=shift; s/%/%25/g; while (/([\173-\377\000-\044\046-\057\072-\100])/) { my $o=sprintf "%%%02X", ord($1); my $i="\\$1"; s/$i/$o/g; } return $_; } sub urldec { $_=shift; while (/%([0-9A-Fa-f][0-9A-Fa-f])/) { my $o=pack("H2",$1); my $i="%$1"; s/$i/$o/g; } return $_; } print urlenc("Je m'\''appelle Félix!\nEt je suis 99.5% content...\n àéïôù et A-Z". " a-z 0-9 #<a href=\"Ragnagna\">")."\n"; print urldec("Je%20m%27appelle%20F%E9lix%21%0AEt%20je%20suis%2099%2E5%25%20". "content%2E%2E%2E%0A%20%E0%E9%EF%F4%F9%20et%20A%2DZ%20a%2Dz". "%200%2D9%20%23%3Ca%20href%3D%22Ragnagna%22%3E")."\n"; ' ---- ... Et colles dans un terminal shell:) ... L'aller et le retour... De plus, ce genre de routine est bcp plus rapide que la tienne: La boucle et le test ne sont effectués qu'une fois par type de caractère à modifier et pas du tout s'il n'y à rien à modifier: Si ta chaine comporte cinq ``e accent aigu'' et huit ``a accent grave'' la boucle ne sera effectuée que deux fois! -- Félix Hauri - <[EMAIL PROTECTED]> - http://www.f-hauri.ch -- http://www-internal.alphanet.ch/linux-leman/ avant de poser une question. Ouais, pour se désabonner aussi.