preg_match косая черта в URL - PullRequest
0 голосов
/ 29 июля 2011

Я хочу убедиться, что посетитель именно на главной странице сайта.Правильно ли это, если URL-адрес:

  • 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 Ответ

1 голос
/ 29 июля 2011

Закрыть.Вместо этого я бы сказал:

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

Различия здесь следующие:

  • Экранирование . символы, обозначенные буквальными точками (точка обычно означает «любой символ, кроме * 1008»).* или \r "в регулярных выражениях).
  • Требование / перед index.php, если присутствует index.php.
  • При желании можно разрешить параметры GET (часть \?.*).
  • Группы без захвата, так как вам, кажется, не интересно проходить захват.

Кроме того, это выглядит хорошо для меня.

...