Uygun kalıcı bağlantı tespit etmek için Regex?

1 Cevap php

Bunlar permalinks benim yukarıdaki sayfasına yönlendirilen vardır:

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

events, dinamik, o specials veya packages olabilir.

Benim ikilem temelde; Ben durumunda bir Robotların hiçbir indeks meta etiketi beslemek böylece amacıyla bir boş bağlantı algılamak gerekiyor:

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

Bu i18n kalıcı bağlantılarınız çalışmaz beri böyle [a-zA-Z]+\/?(.+)/ gibi basit bir desen kullanamazsınız.

Ne regex Ben kalıcı bağlantılarınız için referans olarak $_GET['permalink'] kullanarak, bu algılamak hangi kullanabilirsiniz? Ve yanlış pozitif önlemek?

Update:

Boş bağlantı yok fragmanı "olaylar /" bölümünden sonra var demektir. Bunlar boş:

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

1 Cevap

Ben yakın olduğunu düşünüyorum:

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

Açıklama:

#               - 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