プロが教えるわが家の防犯対策術!

いつもお世話になっております。
■環境■
PHP5 Windows
■状況■
フォルダ内にtextファイルが20~45個入っております(個数は状況によって変わります)。
■目的■
フォルダのtextファイルの中身を参照し、各textファイルに必ず含まれる数字を取り出す。でございます。

■方法■
(1)フォルダにあるファイル名を取りだす
(2)fopenで読み込み(r)で全部を見、数字を別ファイルに書き込む

と考えたのですが、(1)で.、..というよくわからないファイルも一緒に出てきてしまったので、file_existsでファイルが存在するか確認してから(2)に移ろうとお思いました。
が、ファイル名は全部ないといわれてしまうのです。
しかしfile_exists($filename)の$filenameを表示させ、ブラウザにこぴぺするとtextデータは出てきます。

以下プログラムの一部です
※$cは(1)で得たフォルダ内にあるファイル名をループでまわしている値です

for($b=0;$b<$a;$b++){
 $filename="C:/Inetpub/wwwroot/php/kore/1/".$c;
if (file_exists($filename)) {
print "あるよ<BR>";
} else {
print "ないよ<BR>";
}
}

結果は(一部です)
C:/Inetpub/wwwroot/php/kore/1/.text⇒ないよ
C:/Inetpub/wwwroot/php/kore/1/..text⇒ないよ
C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt⇒ないよ
C:/Inetpub/wwwroot/php/kore/1/01762602A.txt⇒ないよ
です。
上記の
C:/Inetpub/wwwroot/php/kore/1/01762602A.txt
C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt
は確実に存在しております。

どこがおかしいのか、ご教授いただければ幸いです
よろしくお願いいたします

教えて!goo グレード

A 回答 (4件)

直接の回答ではありませんが、「.」や「..」という名前が出て来るということは、scandirやopendirしてreaddirでファイル名の一覧を取得しているということですよね。



一覧すべてを取得するのではなく、目的とするファイルのみ一覧で取得できるglobを使う方が便利ではないかと思います。たとえば glob("*.txt") を実行すれば、拡張子がtxtのファイルの一覧を返してくれます。

file_existsがtrueで返らない理由については、他の方もおっしゃっているとおり、まず渡しているファイル名が本当に思っているものなのかどうかを確認してみた方が良いと思います。ありそうなのは、$c にディレクトリ名の一部が入っている、とか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!
glob関数は知りませんでした。
ありがとうございます。
早速使ってみましたところ、見事にtxtのみ採取でき驚きです!

さらにglobで得たファイル名をそのままfile_existsに入れてみると
「あるよ」になりました!!!!
ありがとうございます!!
無事に解決になりました!!!

お礼日時:2007/06/05 19:14

inetpubからではなく、"

http://localhost/php/kore/1/0155442A5.txt"
がfile_existsか?と聞いても結果は同じですか?

もしくは同様にarray = file([URLでのファイル名]);
で聞いても値は入ってますか?
(ブラウザでは開くとお話されてますので)

URLで直接聞いて値が有効であり、絶対パスで聞いて値が有効でない場合は、指定がおかしいのではと思われます。

また、実行時パスを事前に調べておいて、そこからの相対パスで指定したときにも同じ現象になるのか調べてみてもいいんじゃないですか?

ケアレスっぽい気がします(^^;
    • good
    • 0
この回答へのお礼

回答ありがとうございます!!
なるほどです。
相対パスの着眼点はありませんでした。。。
勉強になります!
ありがとうございます。

お礼日時:2007/06/05 19:18

ファイルパスからIISで動かしていると思われますがこの辺に原因があるかもしれません。


IISは使ったことないので詳しいことはわからないですが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
おっしゃるとおりです。
アパッチが使えず致し方なくIISをつかっております。

回答者様に教えていただいてから、調べてみたら
IISならではの不具合があるようですね。
その辺詳しく調べてみます。
ありがとうございます!
突破口が開けた気がします!

お礼日時:2007/06/05 19:09

print "ないよ<BR>";



print $filename . "⇒ないよ<BR>";
にして確認しては
    • good
    • 0
この回答へのお礼

回答いただきましてありがとうございます。

頂いたアドバイスのように行いましたが
やはりファイルは存在するのに
C:/Inetpub/wwwroot/php/kore/1/176933.txt ⇒ないよ
となります。

ぜひともご教授よろしくおねがいいたします。

お礼日時:2007/06/05 17:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング