困惑! 我正在尝试提取我们的本地人的名字,这些名字嵌入在我们的WordPress网站的结构中,即https://www.website.co.uk/site99/folderX/page。在URL中,localsite名称全部为小写,没有任何间隙,而localsite的“显示名称”具有起始大写和单词之间的间隙。我在这里做错了什么?
if(strpos($_SERVER['REQUEST_URI'], '/site01/') !== false) { $categoryIdOrSlug = 'Site 01';}
elseif (strpos($_SERVER['REQUEST_URI'], '/site02/') !== false) { $categoryIdOrSlug = 'Site 02';}
elseif (strpos($_SERVER['REQUEST_URI'], '/site03/') !== false) { $categoryIdOrSlug = 'Site 03';}
endif;
所以我要找的是/ site99 /位于slug的第0位。
答案 0 :(得分:-1)
如果你在https://www.website.co.uk/site99/folderX/page
然后:$_SERVER['REQUEST_URI']
将为/site99/folderX/page
if (strpos($_SERVER['REQUEST_URI'], '/site98/') !== false) { $categoryIdOrSlug = 'Site 98';} // strpos($_SERVER['REQUEST_URI'], '/site98/') will be false
elseif (strpos($_SERVER['REQUEST_URI'], '/site99/') !== false) { $categoryIdOrSlug = 'Site 99';} // strpos($_SERVER['REQUEST_URI'], '/site98/') will be 0 (which is success run & is true)
查看不同的输出:
echo strpos($_SERVER['REQUEST_URI'], '/site99/'); // OUTPUT: 0
此处,strpos()
返回第一个参数(/site99/
)中存在第二个参数($_SERVER['REQUEST_URI']
)的索引/位置。
strpos()
函数在另一个字符串中查找第一次出现的字符串的位置。相关函数:strrpos()
- 查找最后一个字符串在另一个字符串中的位置(区分大小写)
var_dump(strpos($_SERVER['REQUEST_URI'], '/site98/'));
输出为bool(false)
。为什么是false
,因为在参数1中找不到该字符串。如果找到了,那么out将是int
的{{1}}位置。
int(25)
输出将为var_dump(strpos($_SERVER['REQUEST_URI'], '/site99/'));
,因为int(0)
已成功找到strpos()
中的/site99/
。
并且,通常$_SERVER['REQUEST_URI']
或===
用于布尔值(!==
)比较。
无需与TRUE/FALSE
混淆,strpos()
两者完全不同,一个返回位置索引值(如果找到)或!==
,如果找不到必需字符串。然而,FALSE
比较左和右;运算符和右运算的右侧值说!==
或TRUE
。
回复您的评论:
是的,你得到了正确答案。正如您所说,确保我们使用FALSE
检查。
您看到我们在if()
时收到int(0)
。如果我们有一个索引值(甚至是0),则将其视为成功运行(var_dump(strpos($_SERVER['REQUEST_URI'], '/site99/'));
)。也就是说,您搜索的字符串位于索引0或true
的特定位置。 $_SERVER['REQUEST_URI']
确保检查正确无误,if()
表示int(0) !== false
成功运行(也称为int(0)
)。因此,true
也可以说是if(int(0) !== false)
,if(true !== false)
&所以true
会运行。
$categoryIdOrSlug = 'Site 99';
也可以写成:
if()
您无法通过if (strpos($_SERVER['REQUEST_URI'], '/site98/')) { $categoryIdOrSlug = 'Site 98';}
elseif (strpos($_SERVER['REQUEST_URI'], '/site99/')) { $categoryIdOrSlug = 'Site 99';}
echo $categoryIdOrSlug; // output: Site 99
进行检查,因为我们无法说明=== 0
找到搜索字符串的位置,可能会有所不同。