我需要将regex设置为我的页面中的路由的数组键以接受年份。我是什么意思:
$segment = URL::segment(0); //get first segment for example login, or 2015 - as year
$routes = [
"/" => "home.php",
"login" => "login.php",
"some_regex_here" => "year_posts.php"
]
//now check if $segment exists in array $routes
if(isset($routes[$segment])
URL::redirect($routes[$segment]);
else
URL::show404();//page in $segment isn't available in $routes array
现在,当我转到localhost/2015
时,$segment
将为2015
,因此它与密钥中的正则表达式条件匹配,并且应该将我重定向到year_posts.php
。
你有任何想法怎么做吗?
答案 0 :(得分:0)
让我们从正则表达式开始:
快速和结实:这将检查字符串是否只是四个(数字)数字:
'/^\d\d\d\d$/'
也可以写成:
'/^\d{4}$/'
如果要检查特定年份范围,则会变得更复杂。例如。将此用于2010年至2015年:
'/^201[0-5]$/'
现在对于PHP:您不能将正则表达式用作数组键。您可能需要另一个if
,如下所示:
if(preg_match('/^201[0-5]$/', $segment))
{
URL::redirect("year_posts.php");
}
elseif(isset($routes[$segment])
{
URL::redirect($routes[$segment]);
}
else
{
URL::show404();//page in $segment isn't available in $routes array
}