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.