Dan*_*man 58
就在这里!用途filter_var:
if (filter_var($url, FILTER_VALIDATE_URL) !== false) ...
Run Code Online (Sandbox Code Playgroud)
FILTER_VALIDATE_URL根据RFC 2396验证URL .
Dev*_*n M 15
好吧,如果我们查看RFC 3986,我们可以找到URL的定义.
如果我们看一下附录B,就会有一个使用正则表达式来解析URL的指南:
附录B.使用正则表达式解析URI引用
由于"first-match-wins"算法与
POSIX正则表达式使用的"贪婪" 消歧方法相同,因此
使用正则表达式解析
URI引用的潜在五个组件是很自然和平常的.以下行是用于将
格式正确的URI引用分解为其组件的正则表达式.Run Code Online (Sandbox Code Playgroud)^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9上面第二行中的数字只是为了提高可读性; 它们表示每个子表达的参考点(即每个配对括号).我们将子表达式匹配的值称为$.例如,将上面的表达式与之匹配
Run Code Online (Sandbox Code Playgroud)http://www.ics.uci.edu/pub/ietf/uri/#Related导致以下子表达式匹配:
Run Code Online (Sandbox Code Playgroud)$1 = http: $2 = http $3 = //www.ics.uci.edu $4 = www.ics.uci.edu $5 = /pub/ietf/uri/ $6 = <undefined> $7 = <undefined> $8 = #Related $9 = Relatedwhere表示该组件不存在,如上例中的查询组件的情况.因此,我们可以确定五个组件的值
Run Code Online (Sandbox Code Playgroud)scheme = $2 authority = $4 path = $5 query = $7 fragment = $9在相反的方向,我们可以使用第5.3节的算法从其组件重新创建URI引用.
您可以使用此正则表达式手动解析URL或使用PHP 4和5中可用的内置parse_url函数
| 归档时间: |
|
| 查看次数: |
44133 次 |
| 最近记录: |