当前网址和if语句

时间:2018-10-30 12:49:08

标签: php

我有一个基于wordpress的多站点。这些站点使用相同的主题,并且位于相同的域下。我希望他们根据站点显示一些代码。

所以我有这样的东西

<?php 
 $currentUrl = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; 
 if ($currentUrl == 'http://example.com/institution/') {
   do something
 } else {
  do something different
}
?>

现在无论何时我在http://example.com/institution/http://example.com/institution2/上(以及机构2的子页面http://example.com/institution2/contact),但当我进入机构的子页面时,例如:{{1 }}代码无法正常工作。我在这里想念什么?

2 个答案:

答案 0 :(得分:2)

正如arkascha在他的评论中已经提到的那样,您正在检查提供的URL和期望的URL中的equality。您真正想要的是检查(来自用户的)提供的网址以您的预期网址开头

您可以使用stripos函数来实现此目的。

  

stripos —查找字符串中首次出现的不区分大小写的子字符串的位置

int stripos ( string $haystack , mixed $needle [, int $offset = 0 ] )
     

haystack 要搜索的字符串。

     

needle 请注意,needle可以是一个或多个字符的字符串。如果needle不是字符串,则将其转换为整数并用作字符的序数值。

     

偏移量如果指定,搜索将从字符串的开头开始计算此数量的字符。如果偏移量为负,则搜索将从字符串的末尾开始计算此数量的字符。

     

返回相对于干草堆琴弦的起点(与偏移量无关),针所在的位置。另外请注意,字符串位置从0开始,而不是1。如果未找到针,则返回FALSE。

因此您可以将代码更改为

  if (stripos($currentUrl, '//example.com/institution') >= 0)
  {
    ...
  }
  else
  {
    ...
  }

或具有反逻辑(请检查是否不是)

  if (stripos($currentUrl, '//example.com/institution') == FALSE)
  {
    ...
  }
  else
  {
    ...
  }

答案 1 :(得分:0)

<?php 
$currentPath = $_SERVER['SCRIPT_NAME'];
$currentPath = explode("/",$currentPath);

if ($currentPath[1] == 'institution') {
   do something
} else {
  do something different
}
?>