正则表达式检测正确的永久链接?

时间:2010-04-08 16:08:44

标签: php regex

以上固定链接会重新发送到我的网页:

page.php?permalink=events/foo
page.php?permalink=events/foo/
page.php?permalink=ru/events/foo
page.php?permalink=ru/events/foo/

events是动态的,可以是specialspackages

我的困境基本上是;我需要按顺序检测一个空链接,以便在以下情况下为机器人提供无索引元标记:

page.php?permalink=events
page.php?permalink=events/
page.php?permalink=ru/events/
page.php?permalink=ru/events

我不能使用[a-zA-Z]+\/?(.+)/这样的简单模式,因为它不适用于i18n永久链接。

使用$_GET['permalink']作为永久链接的引用,我可以使用哪种正则表达式检测到这种情况?并避免误报?

更新

空链接表示“events /”部分后面没有片段。这些是空的:

page.php?permalink=events
page.php?permalink=events/
page.php?permalink=ru/events/
page.php?permalink=ru/events

1 个答案:

答案 0 :(得分:1)

我认为你很接近:

$pattern = '#^(?:[a-z]{2}/)?[a-z]+/(.+)/$#i';

说明:

#               - regex start
  ^             - start-of-string anchor
  (?:           - non-capturing group (I18N)
    [a-z]{2}    - 2 letter language code
    /           - a slash
  )?            - end non-capturing group, make optional
  [a-z]+        - any letter a-z, multiple times (event)
  /             - a slash
  (.+)          - group 1: any character, multiple times
  /             - a slash
  $             - end-of-string anchor
#i              - regex end, make case-insensitive