从wget响应中获取“文件名”和扩展名

时间:2012-02-05 20:50:04

标签: php wget

有没有一种简单的方法可以从使用PHP通过wget下载的文件中获取文件名和扩展名?

确切的问题是。 我试图在他们接受我的Facebook应用程序后访问用户的脸书图片。

//e.g
wget http://graph.facebook.com/663660516/picture

因此,我不知道下载文件的文件名/扩展名。

1 个答案:

答案 0 :(得分:1)

使用以下内容我可以获取文件名:

<?php

ob_start();
passthru('wget http://graph.facebook.com/663660516/picture 2>&1');
$out = ob_get_contents();
ob_end_clean();

if (preg_match('/saving to:.{4}([a-z0-9\.-_]*)/i', $out, $match)) {
    var_dump($match);
} else {
    echo "No match";
}

结果:

array(2) {
  [0]=>
  string(47) "Saving to: “275781_663660516_1323021723_q.jpg"
  [1]=>
  string(33) "275781_663660516_1323021723_q.jpg"
}

$result[1],您可以使用pathinfo()或类似方法获取扩展名和名称。

注意:正则表达式中的。{4}是在文件周围使用特殊引号()字符wget输出(至少在我的系统上)。它在PHP中注册为3个字节长,我无法通过字符代码进行匹配,因此在我看来这是一个黑客攻击。还假设系统语言是英语,因为它在输出中查找Saving to:

希望有所帮助。