我搜索了但找不到我想要的东西。我有以下代码:
if ( $_SERVER[ "REQUEST_URI" ] === "/post" || $_SERVER[ "REQUEST_URI" ] === "/post/" ) {
// redirect to "/"
} else {
// logic to display the post (uri to db query)
}
可以正常工作。我试图将比较缩短为(截断):
...... $_SERVER[ "REQUEST_URI" ] === "/post" || "/post/" .......
我没想到它会起作用,实际上是希望它会抛出一个错误。没有错误,但是此页面现在有任何URI; /post
,/post/
,/post/my-first-post
全部执行if / else语句的if部分。
第二部分将永远不会执行。为什么会这样?执行此操作的正确方法是什么?
答案 0 :(得分:2)
使用 in_array(),您可以缩短代码。
$rurl_route_list=['/post', '/post/']
if ( in_array($_SERVER[ "REQUEST_URI" ], $url_route_list)) {
// redirect to "/"
} else {
// logic to display the post (uri to db query)
}
答案 1 :(得分:1)
使用简单的正则表达式的替代方法:
if (preg_match('~^/post/?$~', $_SERVER['REQUEST_URI'])) {
// ...
}
这与/post
和/?
后面的可选斜杠匹配。