我有以下PHP来获取URL的一部分。
我有一个 URL www.mysite.com/my-team2.php 它回显my team
而不是my team2
.
$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos(strtolower($page),'my-team') !== false) {
echo 'my team';
} elseif (strpos(strtolower($page),'my-team2') !== false) {
echo 'my team2';
}
这是为什么呢?
这是因为它首先找到第一个实例,否则如果永远不会发生,你应该做的是交换它们
if (strpos(strtolower($page),'my-team2') !== false) {
echo 'my team2';
} elseif (strpos(strtolower($page),'my-team') !== false) {
echo 'my team';
}
所以基本上它所做的没有交换它们就是找到文本"我的团队">
由于文本">my-team"是文本"my-team2"的一部分,因此它总是会触发if而不会看到else if,因为if总是== TRUE。
通过交换它们并将 2 放在第一位,"my-team2"它必须首先找到它,因此如果 2 不在其中,那么 else if 将触发
>那是因为my-team
包含在my-team2
中,所以第一个测试已经为真。
要么反转它们(相当简单(,要么使用其他方法,例如比较整个字符串或使用正则表达式匹配。
因为"my-team"是"my-team2"的子字符串。最好在这些位置上使用正则表达式。
你应该把最具体的匹配放在第一个
echo strpos(strtolower($page),'my-team2') !== false ? 'my-team2' : strpos(strtolower($page),'my-team2') !== false ? 'my-team' : '';