Làm cách nào để kiểm tra xem chuỗi có được mã hóa URL không?Kiểm tra xem chuỗi có được mã hóa bằng URL trong PHP
Phương pháp nào sau đây tốt hơn?
- Tìm kiếm chuỗi cho các ký tự đó sẽ được mã hóa, mà không phải là, và nếu có tồn tại thì nó không được mã hóa, hoặc
- Sử dụng một cái gì đó như thế này mà tôi đã thực hiện:
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";
}
Đoạn mã trên hoạt động, nhưng không phải trong trường hợp chuỗi đã được mã hóa gấp đôi, như trong ví dụ sau:
$t = "Hello%2BWorld%2B%253E%2Bhow%2Bare%2Byou%253F";
$t = "Hello+World%2B%253E%2Bhow%2Bare%2Byou%253F";
Chuỗi sẽ được mã hóa bằng cách nào khi tập lệnh PHP của bạn nhìn thấy? Có phải vấn đề thực sự là tập lệnh của bạn cần phải giải mã URL chuỗi đến hay là vấn đề mà tập lệnh của bạn không cần phải mã hóa kép một liên kết href hoặc giá trị đầu vào chẳng hạn? –
Cách sử dụng urldecode và so sánh nó với chuỗi gốc. Nếu chúng khớp với nó chưa được mã hóa. – thedjaney