1

这是对这个问题的跟进Use PHP to Get File Path/Extension from URL string

给定一个作为 URL 的字符串:http: //i.imgur.com/test.png&stuff

如何获取文件名:test.png没有查询参数?

如果我尝试建议的解决方案:parse_url($url, PHP_URL_PATH)我得到/test.png&stuff

4

3 回答 3

4

不幸的是,它没有使用普通的 URL 字符串,因为它没有 ? 分离出查询字符串。您可能想尝试同时使用几个不同的功能:

$path = parse_url($url, PHP_URL_PATH);
$path = explode('&',$path);
$filename = $path[0]; // and here is your test.png
于 2013-10-28T20:18:26.633 回答
2
parse_url($url, PHP_URL_PATH) I get /test.png&stuff

那是因为你给它一个不包含查询字符串的 URL。你的意思是/text.php?stuff查询字符串由a定义?,而不是 a &&用于附加附加变量。

要提取查询字符串,您需要PHP_URL_QUERY,而不是PHP_URL_PATH

$x = "http://i.imgur.com/test.png?stuff";

parse_url($x, PHP_URL_QUERY); # "stuff"
于 2013-10-28T20:16:05.743 回答
0

基于@Mark Rushakoff的回答最佳解决方案:

<?php
$path = "http://i.imgur.com/test.png?asd=qwe&stuff#hash";
$vars =strrchr($path, "?"); // ?asd=qwe&stuff#hash
var_dump(preg_replace('/'. preg_quote($vars, '/') . '$/', '', basename($path))); // test.png
?>
  1. 正则表达式收集最后 / 之后的所有内容
  2. 如何使用 PHP 从完整路径中获取文件名?
于 2017-09-01T07:36:41.980 回答