• ベストアンサー

バイナリテキスト判別

$hoge = file_get_contents($file); で読み込むファイルが画像だったり、実行ファイルだったり、テキストだったりの場合、$hogeに現在入っているのがテキストかバイナリか区別する方法はどうしたらよいでしょう?

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
noname#244856
noname#244856
回答No.2

finfo::bufferあるいはfinfo_bufferを使いましょう。 http://www.php.net/manual/ja/function.finfo-buffer.php

muuming2001
質問者

お礼

ありがとうございます。これです!

その他の回答 (1)

回答No.1

たいていの場合、finfo_file を使うのではないでしょうか。 http://php.net/manual/ja/function.finfo-file.php

muuming2001
質問者

お礼

ありがとうございます。 既に変数に読み込んだ後に調査をしたいのですが、 ファイルに一度落とさないとだめでしょうか・・

関連するQ&A

  • バイナリファイル内の文字列を検索したい

    初心者で恐縮ですがよろしくお願いします。 入力された値でバイナリファイル内検索し、その値がある行を特定したいのですが、file_get_contentsしてみても歯抜けになってしまっていて、そのままの状態で文字列として取得することができません。↓でPHPはバイナリファイルも文字列として検索でいるとあったんですが・・・  http://blog.asial.co.jp/707 バイナリファイルはphpやjavascriptが該当すると認識しているんですが、正しいでしょうか?htmlゃcssファイルもバイナリファイルと言っていいんでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • またまたバイナリ→テクスト

    VBは5で、Excle2000のVBAでやってます。バイナリデータ→テクストデータに 128バイナリデータを添え字を使って1バイトごとに抽出DATA_PS = DATA_PS & 変換関数 というふたつの部分のリファレンスが正しくかけなくて 困ってます。Getを使って1バイトづつとりだして、Hexを使って変換するというものだそうです。 誰か教えてください。

  • バイナリファイルをテキストファイルに変換する方法を教えて頂けませんか。

    こんにちは。 バイナリファイルをテキストファイルのように読み込んだり、書き込んだりすることは可能でしょうか。バイナリファイルをテキストファイルとして扱う良い方法があれば是非ご教授頂きたいです。 以下は自分なりに考えたプログラムなのですが、すごく文字化けして出力されてしまいます。どこがいけないんでしょうか。 ####プログラム#### #include<stdio.h> int main(){ FILE *fp,*fp2; char str[1024]; //file.txtはバイナリファイルなのでバイナリモードで開く if((fp = fopen("file.txt","rb")) == NULL){ printf("file.txt:open error"); exit(-1); } //out.txtはテキストファイルとして保存したいのでテキストモードで開く if((fp2 = fopen("out.txt","at")) == NULL){ printf("out.txt:open error"); exit(-1); } //一行ずつバイナリファイルをテキストファイルにして保存 while((fgets(str,1024,fp)) != NULL){ printf("%s\n",str); fprintf(fp2,"%s\n",str); } fclose(fp); fclose(fp2); return 0; } ####ここまで#### 以下が出力されたテキストファイル(out.txt)です。 ^A^Dc ^A^D^L<87> ^Y<98>X^?m?;^D&ordm;?^QI&egrave;&Ccedil; ^A^Dc ^A^D^L<87> ^Y<98>X^?m?;^D&ordm;?^QI0g 酷い文字化けを起こしてしまっています。 解決方法をご存知であれば教えて頂けないでしょうか。どうぞよろしくお願いします。

  • テキストファイルのデータからバイナリを作りたい

    現在、テキストデータとしてCSVファイル1つあたり8バイトのデータが1000個ほどのデータが書かれているファイルがあります。このデータをバイナリファイルへ数値も変換して行きたいと思っています。 たとえば1個目のデータ”12345678”というテキストデータをバイナリの"12345678"に変換したらそれを0x00番地に並べて、そして2個目のデータ”87654321”というデータをバイナリにしたらそれを0x90離れた場所に置いていき、それを1000回繰り返して、結果をバイナリファイルで出力したいのですが、何か簡単にできるフリーソフトなどありませんでしょうか? また、プログラムとかでも簡単にできるのならそうしたいのですが、どうしたらよいか教えていただけないでしょうか?

  • テキストバイナリファイルって何?

    テキストバイナリファイルって何ですか? 詳しく教えてください。

  • ローカルのファイル操作

    file_get_contentsでローカルのtxtファイルを読み込ませるにはどうしたらよいでしょうか?win //NG $text = file_get_contents("C:\Documents and Settings\hoge\デスクトップ\hoge.txt");

    • 締切済み
    • PHP
  • トップページURLのみで下層ページのURL取得

    現在勉強のためにsitemapを自動で作れるものを作成しています。 私が考えているようなツールはこのようなツールです -> http://seo.fc2.com/sitemap/ index.html -> hoge.html -> hogekasou.html のようなサイトのindex.htmlを指定した場合にhogekasou.htmlまで探せる方法を探しています。 私が考えている方法は、file_get_contentsなどでindex.htmlを開き解析してhoge.htmlを見つけ、さらにhoge.htmlをfile_get_contentsで開きhogekasou.htmlを見つける方法を考えています。 しかしページが多くなるとこの作業に時間がかかるためなにか効率のいい方法がないかと思い質問させてもらいました。 宜しくお願いします。

    • 締切済み
    • PHP
  • バイナリデータとテキストデータの違いについて

    宜しくお願いします。 バイナリデータを用語辞典で調べると 「テキスト形式(文字データ)以外のデータ形式全般のこと。 実行可能形式のコンピュータプログラムや、画像や音声、 動画などのデータなどがバイナリデータにあたる。」 (http://e-words.jp/w/E38390E382A4E3838AE383AA.html) とあります。 これでは、バイナリデータとテキストデータの違いが分かりません。 テキストデータはコードの集まりで、 さらに細かくすると0と1の集まり(?)だから・・・ と考えるとバイナリデータとテキストデータの 違いが分かりません。 Q1.私は何が分かっていないのでしょうか? Q2.バイナリデータとテキストデータの違いを教えてください。 宜しくお願い致します。

  • バイナリデータ格納について

    はじめまして。 現在、以下のシステム構成でWEBシステムを作成しています。 ▼システム構成 ----------------------  CentOS 5.97  PHP 5.1.6  POSTGRESQL 8.1.9  Apache 2.2.3 ---------------------- PHPを使用して、画像ファイルをバイナリデータに変換し DBに格納しようとしていますが、うまく動作しません。 ▼ソース ---------------------- //画像をバイナリ型に変換します。 $fn = "../../images/uploaded/$image_name"; $cn = @file_get_contents("$fn"); $esc_image = pg_escape_bytea($cn); //DB登録に写真を登録します。 $s=""; $s.="insert into cbphoto("; $s.=" photoid,"; $s.=" photo"; $s.=") values ("; $s.=" $photoid,"; $s.=" '{$esc_image}'"; $s.=")"; $r=pg_exec($db,$s); ---------------------- 小さいファイル(20kb以下前後)は問題なく格納できるのですが、 大きいファイルの場合は、格納されません。 ※ただし、上記のphotoidは格納されます。  また、エラーメッセージも出力されていない様です。 マニュアルを確認するとバイナリ列は1GBまで格納できると 記載されていましたが、ファイルサイズが原因で格納できないのでしょうか? また、他に原因があるのでしょうか? (ラージオブジェクトじゃないとダメ等) 以上、お手数ですがよろしくお願いいたします。

  • PHPのfopenのバイナリモードについて

    PHPのfopen時のバイナリモードについて質問です。 PHPのマニュアルにはWINDOWSのようなバイナリとテキストモードの形式の違う システムでは、画像等のバイナリファイルを扱うときはbを付けてバイナリモードで扱うことが推奨されていますが、 WINDOWS環境でためしたところ、画像ファイルをバイナリではなくテキストモードで開いて中身のデータを読み込んで、別名でfopen("~.jpg","w")で書き込んでも、きちんと表示される画像が作成されました。 テキストモードでバイナリファイルを開いても読み込めってさらに、新規でかきこめるなら なぜ二つのモードが存在するのでしょうか? ちなみに、WINDOWSにおけるバイナリとテキストモードの違いって改行文字が ¥nか¥r¥nの違いだけでしょうか? リナックスではバイナリもテキストも中身の改行文字は¥nとなるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP