我试图找出哪些扩展特定URL都有,这就是我想要做的事:如何通过它的url找到文件的扩展名?
$pathinfo = pathinfo('http://imgur.com/9P54j');
$extension = $pathinfo['extension'];
echo $extension;
网址“http://imgur.com/9P54j”实际上是具有9P54j一个网址.gif图像,它在URL中不明显,我如何提取文件'9P54j'的扩展名.gif?
我试图找出哪些扩展特定URL都有,这就是我想要做的事:如何通过它的url找到文件的扩展名?
$pathinfo = pathinfo('http://imgur.com/9P54j');
$extension = $pathinfo['extension'];
echo $extension;
网址“http://imgur.com/9P54j”实际上是具有9P54j一个网址.gif图像,它在URL中不明显,我如何提取文件'9P54j'的扩展名.gif?
该URL不是.gf图像的URL,而是包含HTML中图像的页面。您将需要解析图像URL的HTML。尝试:右键单击上面提供的链接中的图像,然后单击“打开图像”或“查看图像”查看完整的URL。
即使该URL可能没有扩展名,因为数据可能会流式传输给用户。如果是这种情况,只需检查Content-Type标题以找出扩展名是什么。
我只是想提取文件的扩展名,我用什么函数? –
那么,我想你可以使用preg_match()来找到它周围的HTML中的图像。 – teh1
您可以使用正则表达式来提取它,像这样:
$url = 'http://imgur.com/9P54j';
$content = file_get_contents($url);
$explode = explode('/', $url);
preg_match('/http:\/\/i\.imgur\.com\/' . array_pop($explode) . '(\.[A-z]{1,4})/', $content, $matches);
$ext = $matches[1]; // '.gif'
我的回答假设想抓住从那些在URL本身没有扩展名的URL文件的扩展名。
使用pathinfo()
将无法正常工作,因为它使用文本处理来检索扩展名,并且在url中没有扩展名。
一种方法是使用较低级别的http功能,该功能允许向url发送http请求并获取响应头。响应标题应该包含'Content-Type:'标题,它向我们显示了内容的mimetype。
一旦拥有'Content-Type'标题,您可以使用翻译表和翻译mimetype来扩展文件。这个受支持的扩展名列表当然会受到限制,并且还有可以转换为多个扩展名的mimetypes。在这种情况下,您将不得不对文件内容进行进一步调查。
作为一个真正的PHP PROGRAMM将是这个答案,我会给只是一个伪代码太大:
<?php
function get_extension_from_mimetype($url) {
// static translation table. to be extended
static $translationTable = array (
'image/jpeg' => 'jpg',
'text/xml' => 'xml',
'text/html' => 'html'
);
$defaultExtension = 'dat';
// you'll have to write this method
$mimetype = get_mimetype_by_url($url);
if(isset($translationTable[$mimetype])) {
$extension = $translationTable[$mimetype];
} else {
$extension = $defaultExtension;
}
return $extension;
}
http://imgur.com/9P54j不是图像。这是一个网页。 – esqew
的确如此,它是一个网页,而不是一个图像文件,该图像位于http://i.imgur.com/9P54j.gif中,您可以从中轻松获得扩展名 – Vultour
我用什么函数获取扩展名? –