【发布时间】:2009-10-28 14:50:20
【问题描述】:
如何测试字符串是否经过 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";
【问题讨论】:
-
当您的 PHP 脚本看到该字符串时,它是如何进行 URL 编码的?问题真的是您的脚本需要对传入的字符串进行 URL 解码,还是您的脚本不需要对链接 href 或输入值进行双重编码?
-
如何使用 urldecode 并将其与原始字符串进行比较。如果它们匹配,则尚未编码。
标签: php testing url-encoding