我正在将一组字符串与字符串匹配,如果数组中的一个字符串出现在字符串中,则应该显示一些文本。
在实践中:我只想在特定页面上包含菜单。所以我在我的模板中包含一个 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',
}
}