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


Find a match of any string within an array in another string with PHP

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

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

有什么建议吗?

菲利普

$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',
   }
}

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

试试这个,

$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',
  }
}