我在字符串中匹配一组字符串,如果字符串中的某个字符串出现在字符串中,则应显示一些文本。
在实践中:我想仅在特定页面上包含菜单。因此,我在模板中包含一个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',
};
有什么建议吗?
菲利普
答案 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',
}
}