使用PHP查找另一个字符串中数组中任何字符串的匹配项

时间:2012-05-28 21:37:46

标签: php arrays strpos

我在字符串中匹配一组字符串,如果字符串中的某个字符串出现在字符串中,则应显示一些文本。

在实践中:我想仅在特定页面上包含菜单。因此,我在模板中包含一个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',
};

有什么建议吗?

菲利普

3 个答案:

答案 0 :(得分: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',
   }
}

答案 1 :(得分:0)

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

答案 2 :(得分: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',
  }
}