Php preg_match只提供一个匹配
我正在尝试创建一个url处理程序,并尝试使用preg_match查找变量。 下面是我在url格式的变量替换后得到的preg_匹配(例如:post/%id%/%title%)- 我的问题是$match只返回这个数组内部- “post/5/lol” 而不是那样的数组-Php preg_match只提供一个匹配,php,regex,preg-match,Php,Regex,Preg Match,我正在尝试创建一个url处理程序,并尝试使用preg_match查找变量。 下面是我在url格式的变量替换后得到的preg_匹配(例如:post/%id%/%title%)- 我的问题是$match只返回这个数组内部- “post/5/lol” 而不是那样的数组- Array ( [0] => "post/5/lol", [1] => "5", [2] => "lol" ) 有人能帮我找出为什么它只返回一个匹配项吗
Array (
[0] => "post/5/lol",
[1] => "5",
[2] => "lol"
)
有人能帮我找出为什么它只返回一个匹配项吗?用括号将要捕获的每个片段括起来,创建子表达式:
preg_match("/post\/([0-9]+)\/([a-z-א-ת-]+)/i", "post/5/lol", $match);
你忘了用
()
符号标记捕获组。顺便问一下,难道不能用一个简单的分解('/')
操作来完成吗?@raina77ow:使用preg_match
可以限制允许的输入。在本例中,遍历由explode
生成的数组是一件痛苦的事情。我可以,但我希望用户选择url格式。如果我把+号放在圆括号外,会发生什么情况?@Yehonatan:只返回第一个匹配项,这意味着第一个字符(5
或l
,在本例中)是不需要的。@Yehonatan:没问题!请记住,单击“我的答案”旁边的绿色复选标记,将此问题标记为已回答。
preg_match("/post\/([0-9]+)\/([a-z-א-ת-]+)/i", "post/5/lol", $match);