Как проверить, закодирована ли строка URL?
Какой из следующих подходов лучше?
- Найдите строку для символов, которые будут закодированы, а какие нет, и если они существуют, то они не закодированы, или
- Используйте что-то вроде этого, которое я сделал:
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";
}
Вышеприведенный код работает, но не в тех случаях, когда строка была дважды закодирована, как в этих примерах:
-
$t = "Hello%2BWorld%2B%253E%2Bhow%2Bare%2Byou%253F";
-
$t = "Hello+World%2B%253E%2Bhow%2Bare%2Byou%253F";