アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前質問し、解決したかに見えたのですが、元ファイルに意外なケースがあることに気づき、再度質問させていただきます。

あるブラウザにて、あるテキストファイルの部分を抽出して表示させるスクリプトを考えております。
テキストファイル自体は同階層にあり(./aaa.txt)、不定期に更新されます。内容は下記<./aaa.txt>のような構成になっております。そして下段のphpスクリプト<vvv.php>ですと希望どおりに表示されるのですが、./aaa.txtファイルの中身は状況によっては空行が最初の1回しかないケースがあります。
その場合も、
222222222222
3333333333333 4444444444
のように"111111111111"を除いた、1回目の空行までは表示させたいのですが、何か良い方法はございますでしょうか?
※このようなファイルの場合<vvv.php>で実行すると、何も出力されません。
どうかご教授お願いいたします。

<./aaa.txt>
=========
111111111111
222222222222
3333333333333 4444444444
(空行)
55555555 6666666
66666666 8888888
(空行)
9999999999999999999999


=========

<vvv.php>
=========
<?PHP
function mytrim(&$item){//(1)
$item=str_replace(Array("\r","\n"),Array("",""),$item);
}

$lines=file("./aaa.txt");//(2)
array_walk($lines, 'mytrim');//(3)

$blankline=array_keys($lines,"");//(4)
$lastline=$blankline[1]-1;//(5)

for($i=0;$i<=$lastline;$i++){
if($lines[$i]!="111111111111"){//(6)
print $lines[$i]."<br>";
}
}
?>
=========

A 回答 (2件)

前の回答の時に説明したと思うのですが


$blanklineは空白行が出現する行数
$lastlineが読み出す最終行です。
(5)の行を以下のように書きかえれば良いでしょう。

$lastline=$blankline[(count($blankline)==1?0:1)]-1;//(5)

blanklineの要素数が1しかないときは0番要素
そうでないときは1番要素を抽出するわけです。

できればスクリプトを理解してこまかい修正くらい
できるようになっていただけると助かります
    • good
    • 0
この回答へのお礼

すいません。焦っていて思わず理解を先送りにして質問してしまいました。
『配列$blanklineに空行の要素が幾つあるかを$lastline要素返すようにし、
1であれば0、1でなければ1を返すようにする』という流れで把握いたしました。

どうもありがとうございます。

お礼日時:2006/09/30 21:03

前の質問というのがどれかわからないので、何をやりたいのか今ひとつつかめません。


「最初に空行が現れるまで、"111111111111"以外の行を表示する」
ということですか?
前の質問のURLを貼り付けるか、要求仕様をもう少し正確に書いていただけませんか?

この回答への補足

補正が遅れてしまい申し訳ございません。
最初に質問いたしましたURLは下記になります。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2419589

補足日時:2006/09/30 20:48
    • good
    • 0

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