¿Cómo puedo comprobar si una cadena tiene codificación URL?Prueba si la cadena está codificada en URL en PHP
¿Cuál de los siguientes enfoques es mejor?
- Busca en la cadena de caracteres que se codifican, que no son, y si las hay, entonces no es codificado, o
- usar algo como esto lo 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 ha sido codificados por partida doble, como en estos ejemplos:
$t = "Hello%2BWorld%2B%253E%2Bhow%2Bare%2Byou%253F";
$t = "Hello+World%2B%253E%2Bhow%2Bare%2Byou%253F";
¿Cómo se codificará la cadena en el momento en que lo ve su script PHP? ¿El problema es realmente que su script necesita decodificar URL una cadena entrante, o es el problema que su secuencia de comandos necesita para no codificar por duplicado un href de un enlace o un valor de entrada, por ejemplo? –
¿Qué le parece usar el código url y compararlo con la cadena original? Si coinciden, aún no está codificado. – thedjaney