为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
GCT1015 2021-11-26 17:42:19
我网站的所有 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+)?)?$

正则表达式演示

注意转义点以匹配它的字面意思。


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 171 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信