0

我正在将一组字符串与一个字符串进行匹配,如果数组中的一个字符串出现在字符串中,那么应该会出现一些文本。

在实践中:我只想在特定页面上包含一个菜单。因此,我在我的模板中包含了一个 PHP 片段,并且当定义的页面名称之一出现在 URL 中时,菜单应该会显示出来。目前我使用这个有效的代码:

$domain = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];

if (strpos($domain, '/page1.php') !== false) {
        echo 'Text',
}
elseif (strpos($domain, '/page2.php') !== false) {
        echo 'Text',
}
elseif (strpos($domain, '/page3.php') !== false) {
        echo 'Text',
}
elseif (strpos($domain, '/page4.php') !== false) {
        echo 'Text',
};

是否可以压缩代码以使其更高效,而不是为每一页重复一个 elseif 行。我尝试了以下但没有奏效:

$domain = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];
$string = array('page1.php', 'page2.php', 'page3.php', 'page4.php');

if (strpos($domain, $string) !== false) {
        echo 'Text',
};

有什么建议么?

菲利普

4

3 回答 3

2
$domain = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];
$string = array('page1.php', 'page2.php', 'page3.php', 'page4.php');
foreach($string as $str){
   if (strpos($domain, $str) !== false) {
    echo 'Text',
   }
}
于 2012-05-28T21:50:52.873 回答
0

如果每个页面都必须生成不同的结果,那么您应该使用switch(),如果所有结果都相同,则只需创建一个array('page1.php', 'page2.php', 'page3.php', 'page4.php');并使用in_array()...

于 2012-05-28T21:46:41.257 回答
0

试试这个,

$domain = $_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'];
$string = array('page1.php', 'page2.php', 'page3.php', 'page4.php');

foreach ($string as $key => $value) {
  if (strpos($domain, $value) !== false) {
    echo 'Text',
  }
}
于 2012-05-28T21:55:23.107 回答