2012-08-29 27 views
5

Tôi đã thử nghiệm với chuỗi và int mà tôi có thể tưởng tượng, miễn là nó bắt đầu bằng http: //, nó sẽ là url hợp lệ bằng FILTER_VALIDATE_URL. Vậy, tại sao chúng ta cần FILTER_VALIDATE_URL? Tại sao không chỉ thêm http: // vào đầu vào bất cứ khi nào chúng ta muốn làm cho nó hợp lệ?Bất cứ điều gì bắt đầu bằng http: // đều được xác thực bởi FILTER_VALIDATE_URL?

var_dump(filter_var ('http://example',FILTER_VALIDATE_URL)); 
+0

hiển thị cho chúng tôi những gì bạn đã thử nghiệm và cách thực hiện. –

+0

thử http: // 20, http: // ví dụ, chúng hợp lệ – Jenny

+0

mã bạn sử dụng để thực hiện thử nghiệm là? –

Trả lời

10

Vâng về mặt kỹ thuật, bất kỳ URI mà bắt đầu với một chương trình (như http://) và chứa các ký tự URI hợp lệ sau đó là hợp lệ theo chính thức URI đặc điểm kỹ thuật trong RFC 3986:

Mỗi URI bắt đầu với tên lược đồ, như được định nghĩa trong Phần 3.1, đề cập đến một đặc điểm kỹ thuật cho việc gán các định danh trong lược đồ đó. Như vậy, cú pháp URI là một hệ thống đặt tên liên kết và có thể mở rộng trong đó đặc tả của mỗi lược đồ có thể hạn chế cú pháp và ngữ nghĩa của các định danh bằng cách sử dụng lược đồ đó.

Vì vậy, không có gì lạ về sự trở lại bạn đang nhận được - đó là điều đáng lẽ phải xảy ra. Về lý do tại sao bạn nên sử dụng các filter_var với cờ FILTER_VALIDATE_URL ... nó là cách thích hợp ngữ nghĩa hơn làm một cái gì đó như sau cho mỗi chương trình URL có thể, bạn sẽ không đồng ý?

if (strpos($url, 'http://') === 0 
    || strpos($url, 'ftp://') === 0 
    || strpos($url, 'telnet://') === 0 
) { 
    // it's a valid URL! 
} 
+0

Tôi hiểu. Tôi mong bộ lọc xác thực xem url có bao gồm tên miền hợp lệ hay không. Vì vậy, giả định của tôi là sai. – Jenny

+1

@ Jenny Nếu đó là những gì bạn đang tìm kiếm, sau khi thực hiện cuộc gọi bộ lọc, chỉ cần chuyển giá trị trả về cho ['parse_url'] (http://us.php.net/manual/en/function.parse-url. php) và bạn có thể có được một mảng kết hợp tốt liệt kê các thành phần của URI. – rdlowrey

+0

Cảm ơn, tôi sẽ thử điều đó. – Jenny

Các vấn đề liên quan