使用strpos在某些url格式上执行

时间:2017-09-12 10:42:52

标签: php

我想在网址是/预订时执行操作,但不是/预订/其他东西

我试过了......

if ($_SERVER['REQUEST_URI'] == '/bookings') { 
  // do stuff....
}

但是当用户在/预订页面上进行搜索时,它会失败,此时会将查询添加到网址,例如/预订?搜索=此

我也试过这个......

if (strpos($_SERVER['REQUEST_URI'],'/bookings') !== false && strpos($_SERVER['REQUEST_URI'],'/bookings/') == false ) {
  // do stuff...
} 

但这仍然在/预订/某事上执行,我无法弄清楚为什么?

2 个答案:

答案 0 :(得分:2)

最好使用专用的URL解析方法,而不是使用字符串操作。 PHP的parse_url函数非常适用于此:

$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);

if ($path === '/bookings') {
  ...
}

答案 1 :(得分:1)

试试这个条件。首先会做出精确的字符串。 seocnd与查询sring匹配

if ($_SERVER['REQUEST_URI'] == '/bookings' || strpos($_SERVER['REQUEST_URI'],'/bookings?') !== false) { 
  // do stuff....
}

或者在匹配false时使用===,否则0和false变为相等

if (strpos($_SERVER['REQUEST_URI'],'/bookings') !== false && strpos($_SERVER['REQUEST_URI'],'/bookings/') === false ) {