0

今天我想问你,如果你帮助我改进我的代码,我正在尝试获取 url 的 id,它总是在 /id/ 之后,对于这个例子,我需要不带引号的“9050102”。

网址可以以不同的方式出现:

.site.com/Descreption-Text-Etc/id/9050102
site.com/Descreption-Text-Etc/id/9050102
site.com/bi/product/9050102
.site.com/bi/product/9050102

我的代码:

$foo = explode('/', $url); //Extracing ID
$id = strtoupper($foo[3]); //ID

我注意到在某些情况下它不起作用,不知道为什么,之后我添加了:

if (!$id) { 

$id = strtoupper($foo[2]); //Making Sure ID Found

} 

你能帮我改进一下,让它始终 100% 准确地找到它吗?

4

4 回答 4

0

如果您确定 ID 将始终位于最后一个位置,则可以使用该end函数获取数组的最后一个元素:

$id = end($foo);

if ($id && isset($id[9])) {
   // this means that the ID exists and has at least 10 characters
}
于 2013-10-09T09:43:01.220 回答
0

您可以使用end函数获取数组中的最后一个元素。它将数组指针设置为最后一个元素并返回其值。

$foo = explode('/', $url); //Extracing ID
$id = strtoupper(end($foo)); //ID
if(isset($id) && strlen($id)==10) {
//code
}
于 2013-10-09T09:43:47.850 回答
0
$foo = explode('/', $url);
//count the $foo array
$count = count($foo);
//the last index will be minus 1
$id = $foo[$count-1];
于 2013-10-09T09:44:18.660 回答
0

尝试这个

<?php
$url = "site.com/Descreption-Text-Etc/id/9050102";
echo substr($url, strrpos($url, "/") + 1);
于 2013-10-09T09:45:13.977 回答