示例:
http://mysite.domain/user1 //profile user 1
http://mysite.domain/user1/photos //photos user 1
http://mysite.domain/user1/friends //friends user 1
仅限用户的照片或好友的操作。这是我的代码:
if (preg_match('/^'/(['w'-]+)('/[photos|friends]+)$/i', $url, $m)) {
//code...
}
但不工作,有人能帮我吗?
一个错误是[photos|friends]+
。这将过于宽泛地匹配,即所提到的字符的任何组合,包括|
;而不是按您放置的顺序排列的整个字符串('photos'
或'profile
')。
我想你想要的表达式是'/^'/(['w'-]+)'/(photos|friends)$/i'
——假设$url
是'/user1/photos'
或'/user1/friends'
。
我建议在匹配URL时使用除/
之外的regex分隔符,因为必须转义所有斜杠会使表达式难以理解。就我个人而言,我喜欢使用逗号(因为它在URL中相当罕见):',^/(['w'-]+)/(photos|friends)$,i'
。
更新
要使最后一部分(/photos
或/friends
)可选,请使用',^/(['w'-]+)(/(photos|friends))?$,i'
。如果您想允许使用/user1/
(带有尾部斜线),您可以将其保持为更简单的',^/(['w'-]+)/(photos|friends)?$,i'
。
?
将使前一个令牌可选(在第一种情况下,这是(/(photos|friends))
,在第二种情况下它只是(photos|friends)
。