PHP条件语句不起作用

时间:2017-02-17 21:20:27

标签: php html drupal-7

我有一个声明,检查页面的网址并相应地标记一个页面,但只有当我的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示例

3 个答案:

答案 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
}