Sprawdź, czy łańcuch jest adresem URL zakodowanym w PHP
Jak mogę sprawdzić, czy łańcuch jest zakodowany za pomocą adresu URL?
Które z poniższych podejść jest lepsze?
Wyszukaj ciąg znaków, które byłyby zakodowane, a które nie, a jeśli takie istnieją, to nie są kodowane, lubUżyj czegoś takiego, co zrobiłem:
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";
}
Powyższy kod działa, ale nie w przypadkach, gdy łańcuch został podwójnie zakodowany, jak w tych przykładach:
$t = "Hello%2BWorld%2B%253E%2Bhow%2Bare%2Byou%253F";
$t = "Hello+World%2B%253E%2Bhow%2Bare%2Byou%253F";