我有一个像这样的网址
$url ="www.domain.com/image.php?id=123&idlocation=987&number=01";
以前我使用以下代码
获取扩展程序$img_details= pathinfo($url);
但由于url还有其他变量,因此不再适用。所以在这种情况下如何获取图像名称和扩展名。
我知道我应该首先使用
下载文件$contenido = file_get_contents($url);
但不知道如何从这个
获取文件名/扩展名提前致谢
答案 0 :(得分:0)
$ch = curl_init();
$url = 'http://www.domain.com/image.php?id=123&idlocation=987&number=01';
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$results = split("\n", trim(curl_exec($ch)));
foreach($results as $line) {
if (strtok($line, ':') == 'Content-Type') {
$parts = explode(":", $line);
echo trim($parts[1]);
}
}
返回:image / png
中回答答案 1 :(得分:0)
以上答案都集中在mime类型上,它们在大多数情况下都可以使用,它们都需要额外的资源使用 - 要么获得mime类型的第二次网络调用,要么将更多的磁盘读/写写入磁盘以保存文件使用exif-imagetype函数。并且两者都不会返回作为问题一部分的文件名。这是一个使用curl的下载函数,它将下载的文件作为具有名称,mime类型和内容的数组返回。此外,如果可能,它将尝试从URL获取名称。
样本用法
$file=downloadfile($url);
echo "Name: ".$file["name"]."<br>";
echo "Type: ".$file["mimetype"]."<br>";
代码
function downloadfile($url){
global $headers;
$headers=array();
$file=array("content"=>"","mimetype"=>"","name"=>"");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'readHeaders');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$file["content"]=curl_exec($ch);
if(sizeof($headers)){
foreach($headers as $header){
if(!strncasecmp($header,'content-type:',13)){
$file["mimetype"]=trim(substr($header,13));
}
elseif(!strncasecmp($header,'content-disposition:',20)){
$file["name"]=trim(substr(strstr($header,'filename='),9));
}
}
}
if(!$file["name"]){
$query=strpos("?",$url);
$file["name"]=basename(substr($url,0,($query?$query:strlen($url))));
}
unset($headers);
return $file;
}
function readHeaders($ch, $header) {
global $headers;
array_push($headers, $header);
return strlen($header);
}