Php 如何解析此url?
如果我有这个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
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");