こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPでファイルから取り込んだ数字で計算できない

test.txtの内容
------
10
------

のとき、

<?

$file="test.txt";

//ファイルの中の行を配列に格納
$ary=file($file);

//テキストファイル内の数字を取得
foreach ( $ary as $key => $value ) {
$value = str_replace(array("\r\n","\r","\n"), "", $value);
if (strlen($value )>0){
$a=trim($value);
}
}

$a=$a+1;

print $a;

?>

として、11が出力されることを期待したのですが、
1が出力されてしまいます。

11を出力されるにはどうしたらよいでしょうか?

どうぞよろしくお願いいたします。

投稿日時 - 2010-02-20 17:15:23

QNo.5692212

すぐに回答ほしいです

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

foreach ( $ary as $key => $value ) {
var_dump($value);
。。。。
}
と表示させれば原因がわかるのでは?

投稿日時 - 2010-02-21 00:09:30

お礼

ご指摘していただいた方法で解決できました。

"10"なのに文字数が5と表示されたので、文字コードが原因かな?
と思っていたらビンゴでした!

原因はテキストファイルをUTF-8形式にしていたからのようです。

S-JISにすると解決できました。

UTF-8形式だといろいろ不具合が出るみたいですね。

アドバイスどもありがとうございました!

投稿日時 - 2010-02-21 18:16:54

ANo.2

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

困った事に、俺の環境では ちゃんと 「11」と表示されてしまいました。

試しに、以下のように書き換えてみると どうなりますでしょうか?

<?
$file="test.txt";

$value = file_get_contents($file);
$a = str_replace(array("\r\n","\r","\n"), "", $value);

$a=$a+1;

print $a;
?>

投稿日時 - 2010-02-20 17:52:41

お礼

ご回答ありがとうございます。

上記でも同じ結果でした。

原因はテキストファイルの文字コードだったようです。

しかし、ご提案ありがとうございました!

投稿日時 - 2010-02-21 18:28:56

あなたにオススメの質問