首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >国际资源标识符验证

国际资源标识符验证
EN

Stack Overflow用户
提问于 2009-01-12 14:57:29
回答 1查看 293关注 0票数 1

验证RFC3986的URI相当简单。您可以使用regular expression like

代码语言:javascript
运行
复制
/^                                                     # 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

但是,这不适用于国际域名中的国际字符。例如,http://例え.テスト/メインページ

使用像这样的东西

代码语言:javascript
运行
复制
filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED);

对这些也不起作用。这个问题与使用的字符有关。

有没有在PHP中验证URI的好方法?

EN

回答 1

Stack Overflow用户

发布于 2009-01-13 10:40:56

使用preg_match \pL将匹配任何unicode字母。因此,将a-z替换为\pL。pN为0-9。有关详细信息,请参阅Regular Expression Details

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/435657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档