Xác thực Url trong trường biểu mẫu


7

Tôi đã thêm tập lệnh bên dưới để xác thực url trong trường mẫu của mình. Nó hiển thị url hợp lệ. Ngay cả khi tôi sử dụng url mặc định của lớp xác thực magento Nó sẽ không hiển thị lỗi.

$url=https://www.google.co

if(!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$url))
{
  echo "invalid url";
}
else
{
   echo "valid url";
}

Làm thế nào để giải quyết vấn đề này.


Tôi hơi bối rối về những gì bạn đang cố gắng để đạt được ở đây. Url là hợp lệ từ những gì tôi có thể thấy vì vậy cả verify.js và regex của bạn sẽ trả về rằng nó hợp lệ. Vấn đề mà bạn đang tìm cách giải quyết là gì?
David Manners

đây là url không hợp lệ www.google.co. nhưng nó hiển thị url hợp lệ. Có bất kỳ khả năng nào trong phương pháp trên không.
saravanavelu

Câu trả lời:


3

Regex bạn đã đăng không thực sự làm những gì bạn nghĩ nó làm. Nếu bạn đăng bài này vào một công cụ regex như:

  1. http://www.regexr.com/
  2. http://regex101.com/

Sau đó, bạn sẽ có thể gỡ lỗi regex của bạn, nhưng về cơ bản những gì bạn có là một trận đấu cho một trong hai http://hoặc www.như vậy trong trường hợp của bạn www.google.colà hoàn toàn hợp lệ.

Magento js/prototype/validation.jscung cấp hai tùy chọn xác thực url khác nhau.

  1. url xác thực - yêu cầu http: // https: // hoặc ftp: //
  2. xác thực-url-url - sẽ hoạt động mà không có giao thức,

Vì vậy, để làm cho regex của bạn hoạt động với giao thức, bạn có thể sử dụng như sau:

\b(?:(?:https?|ftp):\/\/(?:www\.)?)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]

Nhưng được cảnh báo rằng điều này cũng sẽ phù hợp với http://ađiều mà tôi đoán bạn không muốn nó làm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.