2012-02-05 27 views
-1

PHPを使用してwget経由でダウンロードしたファイルからファイル名と拡張子を簡単に取得する方法はありますか?wgetのレスポンスから "ファイル名"と拡張子を取得

正確な問題は次のとおりです。 Facebookのアプリを受け入れた後、ユーザーのFacebook画像にアクセスしようとしています。

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

したがって、ダウンロードしたファイルのファイル名/拡張子はわかりません。次を使用して

+2

だから、どのようにファイルの名前と拡張子を取得する方法を知りたいですか? –

+2

詳細をお知らせください。これはあまりにも曖昧です。 –

+0

技術的に、あなたはできません。 URLに基​​づいて推測するだけで済みますし、存在する場合は 'Content-Disposition'ヘッダから推測することもできます。リモートサーバー上の実際のファイル名を知っている人。 – Brad

答えて

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"; 
} 

結果:あなたは、その後の拡張と名前pathinfo()を使用してまたは同様の方法を得ることができる$result[1]から

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

注:正規表現の。{4}は、ファイルの周りに特別な引用符()文字wget出力を消費することです(私のシステムでは少なくとも)。それはPHPで3バイトの長さとして登録し、私は文字コードでそれを一致させることはできませんので、私の意見では少しハックです。また、出力にSaving to:があるので、システム言語が英語であることを前提としています。

希望に役立ちます。