-1

私は特定のURLがどんな拡張子を持っているかを見つけようとしています。これが私がやろうとしていることです:

$pathinfo = pathinfo('http://imgur.com/9P54j');
$extension = $pathinfo['extension'];
echo $extension;

URL「http://imgur.com/9P54j」は実際には9P54j.gif画像を含むURLであり、URLには表示されませんが、ファイル「9P54j」の拡張子.gifを抽出するにはどうすればよいですか。

4

3 に答える 3

2

そのURLは.gf画像へのURLではなく、HTMLに画像を含むページです。画像へのURLのHTMLを解析する必要があります。試してみてください:上記のリンクで画像を右クリックし、[画像を開く]または[画像を表示]をクリックして完全なURLを表示します。

データがPHPのユーザーにストリーミングされる可能性があるため、そのURLでさえ拡張子がない場合があります。その場合は、Content-Typeヘッダーをチェックして、拡張子が何であるかを確認してください。

于 2012-12-18T23:06:52.737 に答える
0

次のように、正規表現を使用して抽出できます。

$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'
于 2012-12-18T23:11:35.007 に答える
0

私の答えは、URL自体に拡張子がないURLからファイルの拡張子を取得したいと想定しています。

pathinfo()テキスト処理を使用して拡張子を取得し、URLには拡張子がないため、usingは機能しません。

アプローチは、URLにhttpリクエストを送信し、応答ヘッダーをフェッチできるようにする低レベルのhttp機能を使用することです。応答ヘッダーには、コンテンツのmimetypeを示す「Content-Type:」ヘッダーが定期的に含まれている必要があります。

'Content-Type'ヘッダーを取得したら、変換テーブルと変換mimetypeを使用してファイル拡張子を付けることができます。もちろん、このサポートされている拡張機能のリストは制限されており、複数の拡張機能に変換できるmimetypeがあります。このような場合、ファイルの内容自体についてさらに調査する必要があります。

実際のphpプログラムはこの答えには大きすぎるので、疑似コードだけを与えます。

<?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;
}
于 2012-12-18T23:24:54.347 に答える