Php 如何解析此url?

Php 如何解析此url?,php,Php,如果我有这个url:node/95/pdf/1。如何获取数字/值1?尝试解析url,但输出错误 PS:值1只是一个示例,id是动态的,取决于用户单击的内容。您可以这样做: $id = end(explode('/', 'node/95/pdf/1')); 示例: $arr = explode('/', 'node/95/pdf/1'); $id = end($arr); echo $id; // 1 尝试: $input = 'node/95/pdf/1'; $parts = expl

如果我有这个url:
node/95/pdf/1
。如何获取数字/值1?尝试解析url,但输出错误

PS:值1只是一个示例,id是动态的,取决于用户单击的内容。

您可以这样做:

$id = end(explode('/', 'node/95/pdf/1'));
示例:

$arr = explode('/', 'node/95/pdf/1');
$id = end($arr);
echo $id;  // 1
尝试:

$input  = 'node/95/pdf/1';
$parts  = explode('/', $input);
$output = (int) $parts[3];
我会用

未经测试的示例:

list($node_id, $pdf_id) = sscanf($url, "node/%d/pdf/%d");
$node\u id
包含节点id,
$pdf\u id
包含pdf id。根据您的评论:是的,您可以将其与echo$pdf\u id一起输出

如果在一个数组中同时需要它们,可以删除
list()
方法,方法如下:

$ids=sscanf($url,“node/%d/pdf/%d”)

这将在
$id
中返回一个包含节点和pdf id的数组

最后,如果您只需要pdf id,您可以这样做

$id=sscanf($url,“node/95/pdf/%d”)

我只是演示了如何获取这两个数字,因为我假设您可能需要从url获取这两个数字

编辑
在发布我的解决方案之后,看到所有其他答案,我想知道为什么每个人都在用多个函数来解决这个问题,而有一个函数正是他所需要的:根据格式解析字符串。这也会导致不太倾向于sql注入的代码IMHO。当url被扩展或追加查询字符串时,它不会中断某些内容

编辑2
list($node_id,$sub,$sub_id)=sscanf($url,“node/%d/%[^/]/%d”)
将为您获取“pdf”,它的id是独立的,而不是“node/%d/%s/%d”。这是因为字符
/
也与
%s
匹配。使用
%[^/]
匹配除正斜杠以外的所有内容。

如果id在100或1000中,该怎么办?如node/95/pdf/1000。。你的代码还能用吗?@user1074776:正如我在评论中所说的,它在最后一个斜杠后得到了所有东西。它的长度无关紧要。我不太明白你的代码。如何获取pdf_id?echo$pdf\u id?抱歉,如果我在这方面做得太慢了。在本例中,sscanf返回一个数组<代码>%d
表示“数字”。因此,sscanf接受您的url,并假设存在
节点//pdf/
。sscanf作为数组返回的数字部分。使用list()将它们保存在单独的变量中,这可能很方便,因为我认为您可能还需要节点id。我更新了答案以提供更多示例。尝试了您的代码,但返回的是空白。var\u dump($pdf\u id)给我空值。我做错了吗?尝试了所有方法,但仍然返回空值。。。hmmm.
list($node_id,$sub,$sub_id)=sscanf($url,“node/%d/%[^/]/%d”)
会将字符串及其id分开(在
$sub
$sub\u id
中)。
list($node_id, $pdf_id) = sscanf($url, "node/%d/pdf/%d");