-3

画像ファイル拡張子を取得して乱数を追加しようとしています。348678423.jpeg 、343344343.jpg、32434343.gif、3434343.png など。

以下は私のphpコードです:

function getExtension($str)
{
     $i = strrpos($str,".");
 if (!$i) { return ""; }
 $l = strlen($str) - $i;
 $ext = substr($str,$i+1,$l);
 return $ext;
}
  @$extension = getExtension($file);
   $extension = strtolower($extension);
  $image_named_uniq = uniqid().'.'.$extension;  

しかし、この変数$image_named_uniqをエコーすると、50aa5a2e0f425 のような乱数が表示されます。50aa5a2e0f425.jpgなどを表示する必要があります。

私のコードで何が間違っていますか?

4

4 に答える 4

5

拡張機能のみが必要な場合:

echo end(explode('.', $str));
于 2012-11-19T14:16:10.020 に答える
2

pathinfo()を使用して拡張子を取得できます

$path_parts = pathinfo($filename);
echo $path_parts['extension'];
于 2012-11-19T14:19:31.973 に答える
1

@jereon が投稿した回答は正しく、これを行う最も簡単な方法です。

ただし、explode と end を使用せずにファイルに関する詳細情報を抽出したい場合は、単純に PHP 組み込みpathinfo()関数を使用できます。

参照: pathinfo()

<?php
    $path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

これは戻ります

/www/htdocs/inc
lib.inc.php
php
lib.inc

配列と同様$filenameに、 に読み込むためにループする必要がありますpathinfo()。これは、次のように foreach ループを使用して非常に簡単に実行できます。

// Loop through the filenames array
foreach($filename as $value){
    // Retrieve the path parts of each individual file
    $path_parts[] = pathinfo($value);
}

// Write out the path parts array
print_r($path_parts);
于 2012-11-19T14:21:52.483 に答える
0

最も簡単な方法は、pathinfo()を使用することです。結果はファイル名に基づいており、ファイルのイントロスペクションは実行されないことに注意してください (たとえば、logo.jpg名前が変更されたイメージlogo.phpにはファイル拡張子が付けられます。内容からファイルタイプを取得する場合は、fileinfo 拡張子.phpを使用します)。

于 2012-11-19T14:22:25.700 に答える