Teste si la chaîne est codée en URL en PHP

Comment puis-je tester si une chaîne encodée URL?

Laquelle de ces approches est la mieux?

  • De la recherche la chaîne de caractères codés, qui ne le sont pas, et s'il en existe, puis son pas codé, ou
  • Utiliser quelque chose comme ce que j'ai fait:

function is_urlEncoded($string){
 $test_string = $string;
 while(urldecode($test_string) != $test_string){
  $test_string = urldecode($test_string);
 }
 return (urlencode($test_string) == $string)?True:False; 
}

$t = "Hello World > how are you?";
if(is_urlEncoded($sreq)){
 print "Was Encoded.\n";
}else{
 print "Not Encoded.\n";
 print "Should be ".urlencode($sreq)."\n";
}

Le code ci-dessus fonctionne, mais pas dans les cas où la chaîne a été doublement codé, comme dans ces exemples:

  • $t = "Hello%2BWorld%2B%253E%2Bhow%2Bare%2Byou%253F";
  • $t = "Hello+World%2B%253E%2Bhow%2Bare%2Byou%253F";

source d'informationauteur Psytronic