preg_match在url中尾随斜杠

时间:2011-07-28 20:13:22

标签: regex preg-match

我想确保访问者正好在网站的主页上。 如果网址是:

,这是否正确匹配
  • www.site.com
  • www.site.com /
  • www.site.com/index.php

    preg_match("/^(www.)?(".$host.")(\/)?(index.php)?$/", $url, $matches)
    

将这样的最后两场比赛分开似乎不太正式,但它确实有效 还有没有任何浏览器不会将www.site.com“重定向”到www.site.com /?

1 个答案:

答案 0 :(得分:1)

关闭。我会选择这样做:

preg_match("/^(?:www\.)?(?:".$host.")(?:\/(?:index\.php)?)?(?:\?.*)?$/", $url, $matches)

这里的区别是:

  • 转义.字符作为文字点(点正常表示“正常表达式中除\n\r以外的任何字符”。
  • 如果/存在,则index.php之前需要index.php
  • 可选择允许GET参数(\?.*部分)。
  • 非捕获组,因为您似乎不想通过捕获。

除此之外,它对我来说很好看。