Probar si la cadena está codificada en URL en PHP

¿Cómo puedo probar si una cadena está codificada en URL?

¿Cuál de los siguientes enfoques es mejor?

Busque en la cadena los caracteres que se codificarían, los que no, y si existen, no están codificados, oUsa algo como esto que he hecho:

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";
}

El código anterior funciona, pero no en los casos en que la cadena se ha codificado doblemente, como en estos ejemplos:

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

Respuestas a la pregunta(11)

Su respuesta a la pregunta