目前我有以下代码。
$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6';
$parts = parse_url($file_id);
$path_parts = explode('/', $parts[path]);
$secret = $path_parts[3];
print $secret;
上面你可以看到我试图通过/
进行爆炸并且它没有返回我正在寻找的输出而只是返回file
而我需要它返回6N2viQpwLKBIA6
那我怎么能得到那个ID?
答案 0 :(得分:4)
parse_url
有效,但您需要指定query
索引。像这样重做:
$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6';
$parts = parse_url($file_id);
$path_parts = explode('=', $parts['query']);
$secret = $path_parts[1];
print $secret;
答案 1 :(得分:1)
如果所有商品的网址始终相同,您是否可以通过这种方式快速完成?
$URLComp = explode("show/file?filename=", $file_id);
$secret = $URLComp[1];
print $secret;
主要原因是,可能会有www
的情况,有或没有https
。
答案 2 :(得分:0)
如果您出于任何原因需要使用parse_url
,则可以使用query
组件代替path
作为suggested by @CodieGodie。
但是,如果您使用此字符串作为字符串进行处理,则可以忽略parse_url
并使用它就像字符串一样。
$file_id = 'https://skyvault.co/show/file?filename=6N2viQpwLKBIA6';
$parts = explode('/', $file_id);
$lastPart = end($parts);
$varParts = explode('=', $lastPart);//also explode('?', $lastPart) if you want "filename="
$secret = end($varParts);
print $secret;
注意:如果您的字符串始终具有相同的格式,则此代码将起作用,即:' https://example.com/path/path/path?varName=varValue'只有1个var在URL的末尾。