如何使用 PHP preg_match 检查 URL 的结构?

我网站的所有 URL 都具有以下结构:


https://www.example.com/section/item


其中section是一个词,item是一个数字。


因此,可能的 URL 是:


https://www.example.com


https://www.example.com/section


https://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);

}

谢谢。


GCT1015
浏览 178回答 1
1回答

不负相思意

如果 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+)?)?$正则表达式演示注意转义点以匹配它的字面意思。
打开App,查看更多内容
随时随地看视频慕课网APP