使用 PHP 抓取 URL 的一部分



我有以下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' : '';