我有一个声明,检查页面的网址并相应地标记一个页面,但只有当我的if语句有一个选项可以检查时它才有效。
$url = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
<?php if (strpos($url, 'events/eventname')!= false) { ?>
~markup~
<? } ?>
如果我修改它以检查两个可能的网址...
<?php if (strpos($url, 'events/eventname')!= false) { ?>
~markup~
<? }else if (strpos($url, 'events/othereventname')!= false) { ?>
~markup~
<? } ?>
...页面无法加载。我必须遗漏一些明显的东西 - 有人能告诉我这个功能有什么问题吗?
*编辑:因为请求我已经包含了$ url变量和更具体的url示例
答案 0 :(得分:2)
strpos返回0。您可以替换!= to!==使其工作 - 否则php会在内部将false转换为零,这会导致不正确的比较结果。
例如:
<?php
var_dump(strpos('aaa', 'a'));
echo var_dump(strpos('aaa', 'a') === false);
echo var_dump(strpos('aaa', 'a') == false);
答案 1 :(得分:1)
尝试使用!==
比较,以防万一字符串位于第0位。
另一个语法问题是else if
,而您应该使用elseif
。
尝试将简短的php标记<?
更改为完整的<?php
。
答案 2 :(得分:-2)
而不是使用strpos()
,您可以获得请求uri,这是域名之后的任何内容(即:www.example.com/foo/bar会给你/ foo / bar)。
$url = $_SERVER['REQUEST_URI'];
if($url == "/foo/bar") {
// markup
} elseif($url == "/bar/foo") {
// markup
} else {
// markup
}