以下のファイル名で

testディレクト配下に
test.csvと1234_456_789_11111111というファイルがあります。
PHPのプログラムで、そのtestディレクトリをOPENします。
それで、$testにファイル名が来ます。
そのファイル名を以下のようなロジックで_で区切りたいと思います。
list($aa,$bb,$cc,$dd) = explode("_",$test);
if (!ereg('.csv', $file_name) && ereg("^[0-9]+$", $aa) && ereg("^[0-9]+$", $bb) && ereg("^[0-9]+$", $cc)) {

}
ですが、
PHP Notice: Undefined offset: 3 in
PHP Notice: Undefined offset: 2 in
PHP Notice: Undefined offset: 1 in
PHP Notice: Undefined offset: 3 in
PHP Notice: Undefined offset: 2 in
PHP Notice: Undefined offset: 1 in

というメッセージが出ます。
どうしたらいいのでしょうか??

回答の条件
  • 1人2回まで
  • 登録:2006/10/02 17:34:38
  • 終了:2006/10/02 18:13:03

回答(3件)

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912006/10/02 17:48:59

ポイント27pt

$test に正しくファイル名が入っていないのではないでしょうか。

print "TEST = $test<BR>\n";
$myList = explode( "_", $test );
print "ARRAY NUM = ". sizeof($myList)."<BR>\n";

のように、正しく配列に入っているか、explodeで期待通りに分割できるかを確認してみてはどうでしょうか。

id:hopefully

これで、csvまで読み込んでました。

すいません。

ありがとうございます。

2006/10/02 18:12:54
id:ratbeta No.2

ratbeta回答回数132ベストアンサー獲得回数92006/10/02 17:42:49

ポイント27pt

恐らく$test = "test.csv";としたときに問題が発生するのだと思いますが、

list($aa,$bb,$cc,$dd) = explode("_",$test);

の部分を

$fpart = explode("_", $test);

if (count($fpart) == 4) list($aa, $bb, $cc, $dd) = $fpart;

とするか、すべてのコードを、

$fpart = explode("_", $test);

if (! strstr('.csv', $file_name) && ereg("^[0-9]+$", $fpart[0]) && ereg("^[0-9]+$", $fpart[1]) && ereg("^[0-9]+$", $fpart[2])) {

...

}

とすれば良いと思います。

# 蛇足ながら、ereg_*よりもpreg_matchなどを用いる方が高速です。

id:hopefully

大丈夫になりました。www

ありがとうございます。

2006/10/02 18:09:47
id:ito-yu No.3

ito-yu回答回数323ベストアンサー獲得回数142006/10/02 17:55:51

ポイント26pt
if (!ereg('.csv', $file_name)){
  list($aa,$bb,$cc,$dd) = @explode("_",$test);
  if(ereg("^[0-9]+$", $aa) &amp;&amp; ereg("^[0-9]+$", $bb) &amp;&amp; ereg("^[0-9]+$", $cc)) {
    
  }
}

explode()の前に@を付けるだけでもいいんでしょうが、そもそもcsvの時はexplode()する必要がないのでこうするのがスマートではないでしょうか

id:hopefully

なるほどwww

勉強になりますねwww

ありがとうございますwww

2006/10/02 18:12:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません