0

この関数を適応させて、ローカル ファイル パスでも動作するようにすることはできますか?

$meta には以下が含まれます: Array ( [wrapper_type] => plainfile [stream_type] => STDIO [mode] => rb [unread_bytes] => 0 [seekable] => 1 [uri] => C:\imgs\232434. jpg [タイムアウト] => [ブロック] => 1 [eof] => )

$meta["wrapper_data"] は存在しません。

function isImage($url)
  {
     $params = array('http' => array(
                  'method' => 'HEAD'
               ));
     $ctx = stream_context_create($params);
     $fp = @fopen($url, 'rb', false, $ctx);
     if (!$fp) 
        return false;  // Problem with url

    $meta = stream_get_meta_data($fp);
    if ($meta === false)
    {
        fclose($fp);
        return false;  // Problem reading data from url
    }

    $wrapper_data = $meta["wrapper_data"];
    if(is_array($wrapper_data)){
      foreach(array_keys($wrapper_data) as $hh){
          if (substr($wrapper_data[$hh], 0, 19) == "Content-Type: image") // strlen("Content-Type: image") == 19 
          {
            fclose($fp);
            return true;
          }
      }
    }

    fclose($fp);
    return false;
  }
4

1 に答える 1

3

getimagesizeを使用して、ローカル/URL ファイルが画像かどうかを検出するのが最善です。

失敗すると、FALSE が返されます。これはおそらくあなたが探しているものです。

于 2012-09-13T15:23:02.340 に答える