我网站的所有 URL 都具有以下结构:https://www.example.com/section/item其中section是一个词,item是一个数字。因此,可能的 URL 是:https://www.example.comhttps://www.example.com/sectionhttps://www.example.com/section/item通过 .htaccess,所有请求都转到index.php(路由)。如果用户键入,我想显示 404 错误消息:https://www.example.com/section/item/somethingelse为了检查 URL 的结构,如何在以下函数中正确更改模式?function isValidURL($url) { return preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $url);}谢谢。
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
如果 section 是一个单词(并且不能包含数字),并且 item 是一个数字,则可以使用[^\W\d]+
和\d+
匹配除数字以外的单词字符以匹配 1+ 位数字。
在示例数据中有可选部分,您可以替换(/.*)?$
为(?:/[^\W\d]+(?:/\d+)?)?$
.
解释
(?:
非捕获组/[^\W\d]+
对于部分,匹配 1+ 次除数字以外的字符字符(?:/\d+)?
对于项目,可选匹配/
和 1+ 位数字)?
关闭非捕获组并使其可选
如果 section 可以是一个也可以只包含数字的单词,你也可以使用 \w+
该模式可能看起来像
^https?://[a-z0-9-]+(?:\.[a-z0-9-]+)*(?::[0-9]+)?(?:/[^\W\d]+(?:/\d+)?)?$
注意转义点以匹配它的字面意思。
- 1 回答
- 0 关注
- 197 浏览
添加回答
举报
0/150
提交
取消