Php 允许通过正则表达式使用多个URI参数
我离我想要实现的目标非常接近 我有这个:Php 允许通过正则表达式使用多个URI参数,php,regex,Php,Regex,我离我想要实现的目标非常接近 我有这个: '/create-group/([A-Za-z0-9\-\_]+)(?:/([A-Za-z0-9\-\_]+))?(?:(\?|&)(groupid|copyofgroup|ref)=([A-Za-z0-9\-\_]+))?' 它允许我限制可以键入和访问的URI,例如: /create-group/123/456?groupid=789 在正则表达式的最后一位,我允许使用3个参数(groupid、copyofgroup和ref) 这一切都很好
'/create-group/([A-Za-z0-9\-\_]+)(?:/([A-Za-z0-9\-\_]+))?(?:(\?|&)(groupid|copyofgroup|ref)=([A-Za-z0-9\-\_]+))?'
它允许我限制可以键入和访问的URI,例如:
/create-group/123/456?groupid=789
在正则表达式的最后一位,我允许使用3个参数(groupid、copyofgroup和ref)
这一切都很好,但我想不出一种方法让我的preg_match验证这3个参数的无限个。现在,我只限于一个参数的实例
我希望我的preg_match()接受:
/create-group/123/456?groupid=789&ref=101112©ofgroup=789
我试过乘法器,比如*
和+
,但都没有用
谢谢大家! 找到了解决方案:
'/create-group/([A-Za-z0-9\-\_]+)(?:/([A-Za-z0-9\-\_]+))?(?:((\?|&)(groupid|copyofgroup|ref)=([A-Za-z0-9\-\_]+))+)?'
您可以在末尾添加{0,3}而不是“?”: /创建组/([A-Za-z0-9-|]+)(?:/([A-Za-z0-9-|]+)(?:(\?|&)(组ID | copyofgroup | ref)=([A-Za-z0-9-|]+){0,3} 我在这里试过:
为什么你使用正则表达式而不是
$\u GET
,$\u POST
或$\u REQUEST
超全局?@Nordenheim我不知道你的意思是什么?此代码在获取相关文件之前放置在顶层。我只想限制可以在URI中插入哪些参数。$\u获得superglobals将如何帮助我?将[A-Za-z0-9\-\\\\\\u]
替换为[:alnum:][unum:]
。字符在方括号内失去了特殊性,因此不需要用反斜杠转义,两端的破折号表示破折号,而不是范围分隔符。而且字符类很有意义。@Justin01标签建议您使用PHP,这意味着您可以从URI字符串中获取所需的参数,忽略其余的参数,而不是在代码中穿行。非常有趣,不知道为什么我没有想到这一点。非常感谢你!