Php URL中的chriso/klein正则表达式
我正在尝试将正则表达式添加到klein URL中,这将允许在之后使用大写或斜杠Php URL中的chriso/klein正则表达式,php,regex,Php,Regex,我正在尝试将正则表达式添加到klein URL中,这将允许在之后使用大写或斜杠 $klein->respond('GET', '@([Hh]ome[\\/]?)', function() { return 'Home'; }); 然而,这个正则表达式对我不起作用——它根本不认识它 我也试过了,但最后没有删减,所以它只会承认资本,就像这样: '@([Hh]ome)' 基本上,我希望它能够做到以下几点: site.com/home site.com/home/ site.com/H
$klein->respond('GET', '@([Hh]ome[\\/]?)', function() {
return 'Home';
});
然而,这个正则表达式对我不起作用——它根本不认识它
我也试过了,但最后没有删减,所以它只会承认资本,就像这样:
'@([Hh]ome)'
基本上,我希望它能够做到以下几点:
site.com/home
site.com/home/
site.com/Home
site.com/Home/([Hh]ome[\\/]?)
不是有效的正则表达式。问题是末尾的字符类,即[\\/]
。斜杠(/
)需要转义,但不能通过转义反斜杠(转义)字符(\
)来实现。您编写的正则表达式无效,我很惊讶它没有抛出错误。(你确定不是吗?)
不管怎样,您试图说“可选尾部斜杠”,它可以写成\/?
。注意我们是如何避开斜杠的。如果你想使用字符类,你应该把它放在方括号内,就像这样:[\/]
这个正则表达式应该这样做
[Hh]ome\/?
请参见此处:如果在正则表达式中编写
@
,则它必须在实际文本中。工作正常,或者我遗漏了您需要的东西。@andrisleduskrasts根据文档,您需要在任何自定义正则表达式前面加上“@”符号:不幸的是,这不是问题所在(我同意您的推理,但是,即使完全删除正则表达式的最后一部分并留下[Hh]在那里它甚至不工作。双反斜杠来自于使用AltoRouter,在那里你必须转义转义字符