Uluslararası Kaynak tanımlayıcı Doğrulama

1 Cevap php

RFC 3986 için URI'lere doğrulayarak oldukça basittir. Kullanabileceğiniz bir regular expression like:

/^                                                     # Start at the beginning of the text
([a-z][a-z0-9\*\-\.]*):\/\/                            # The scheme
(?:                                                    # Userinfo (optional)                                              
  (?:(?:[\w\.\-\+!$&'\(\)*\+,;=]|%[0-9a-f]{2})+:)*
  (?:[\w\.\-\+%!$&'\(\)*\+,;=]|%[0-9a-f]{2})+@
)?
(?:                                                    # The domain
  (?:[a-z0-9\-\.]|%[0-9a-f]{2})+                       # Domain name or IPv4
  |(?:\[(?:[0-9a-f]{0,4}:)*(?:[0-9a-f]{0,4})\])        # or IPv6
)
(?::[0-9]+)?                                           # Server port number (optional)
(?:[\/|\?]
  (?:[\w#!:\.\?\+=&@!$'~*,;\/\(\)\[\]\-]|%[0-9a-f]{2}) # The path (optional) 
*)?
$/xi

Ancak, bu Uluslararası Alan Adları bulunanlar gibi Uluslararası karakterler için çalışmaz. Örneğin, http:// 例え. テスト / メイン ページ.

Gibi bir şey kullanarak

filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);

ya bu çalışmıyor. Sorun kullanılan karakterleri ile ilgisi yoktur.

PHP URI doğrulamak için iyi bir yolu var mı?

1 Cevap

Preg_match \ PL ile unicode mektup maç olacak. Yani \ kanşrmı ile bir-z değiştirin. Ve \ pN ile 0-9. Regular Expression Details daha fazla bilgi için bkz.