【PHP】下らねぇ質問はID出して書き込みやがれ 86

このエントリーをはてなブックマークに追加
952nobodyさん:2009/08/28(金) 14:39:06 ID:???
953nobodyさん:2009/08/28(金) 14:40:02 ID:IryiXPVo
TREEFILEはスレッド順に並んだログ番号ファイルで
1,3,4\n
だとLOGFILEの記事番号1番がスレッド記事、3&4番がレス記事になります。
記事内のコメントにキーワード文字が含まれてる場合、
そのスレッドツリー丸ごと1行分を$hitthreadlineに
該当したスレッド分格納したいのですが
どうも上記プログラムを実行すると$hitthreadlineに
何も挿入されておりません。
ログの方にはキーワードを含まれた分があるのですが・・・・

何かおかしいところあるでしょうか?
954nobodyさん:2009/08/28(金) 14:41:47 ID:IryiXPVo
明らかにおかしかった部分は書き直しましたがまだ先程と動作変わりません。
文章は>>953です。

$keyword = "ああああ";
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$threadcount = count($treelog);//スレッド数をカウント
for($i=0; $i<$threadcount; $i++){
$writing = explode(",", $treelog[$i]);
$writingcount = count($writing);
for($j=0; $j<$writingcount; $j++){
$rrrr = $writing[$j];
list($no,$now,$name,$email,$sub,$model,$com,$host,$pwd,$ext,$w,$h,$time,$chk) = explode(",", $log[$rrrr]);
if(mb_ereg_match($keyword,$com)){
$hit = TRUE;
}
}
if($hit == TRUE){
$hitthreadline .= "$i\n";
$hit = FALSE;
}
}
echo "$hitthreadline";
955nobodyさん:2009/08/28(金) 14:45:50 ID:???
1行ごとに値をチェックしてみ
956nobodyさん:2009/08/28(金) 14:46:48 ID:???
>>954
そんなコードじゃコピペしてすぐ試せないだろクズが!
define使わないで書けやできそこない
957nobodyさん:2009/08/28(金) 14:50:40 ID:IryiXPVo
>>955
やってみます、ありがとうございます。

>>956
昨日と同じ方ぽいのですが
外部ロダにあげるなやらちょっと無茶すぎやしませんか。
昨日言われたとおりにここにわざわざ書き込んだのに。
結局ログ自分で用意しないといけないから
defineも糞もないと思うんですが。
958nobodyさん:2009/08/28(金) 14:54:10 ID:???
◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

ヌルーしとけー
959nobodyさん:2009/08/28(金) 14:56:26 ID:???
>>957
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
$treelog = file(TREEFILE);
$log = file(LOGFILE);
960nobodyさん:2009/08/28(金) 15:04:57 ID:IryiXPVo
>>958
すいません、気をつけます。

>>959
?
961nobodyさん:2009/08/28(金) 15:11:41 ID:???
$treelog = file("./treefile.txt");
$log = file("./logfile.log");

みたいに書きなおせ氏ね
962nobodyさん:2009/08/28(金) 15:17:29 ID:???
・ 質問者として、態度をわきまえること。
963nobodyさん:2009/08/28(金) 15:19:00 ID:???
>>957
>結局ログ自分で用意しないといけないからdefineも糞もないと思うんですが。


日本語でおk
お前が用意しろよ
コピペして動かないだろバカなの?
964nobodyさん:2009/08/28(金) 15:21:50 ID:???
・ 回答者として、態度をわきまえること。
965nobodyさん:2009/08/28(金) 15:22:09 ID:???
残念だけどここは抽象的なことを抽象的に返す場所で
具体的な答えを求めてもかえって来ないよ
わからんから
966nobodyさん:2009/08/28(金) 15:29:40 ID:???
ID:IryiXPVoスルー推奨
967nobodyさん:2009/08/28(金) 15:33:37 ID:???
http://www.kent-web.com/pubc/book/test/uploader/uploader.cgi?
の2323に一式あげてみました、
失礼しました。
968nobodyさん:2009/08/28(金) 15:47:15 ID:???
>>954
本題と関係ないんだけど、
$log[$rrrr]ってことはログ番号=ログファイル内での行番号ってこと?
ログファイルに(バグとか手修正で)意図しない行が追加/削除される
だけで破綻するんじゃないか?
969nobodyさん:2009/08/28(金) 15:49:04 ID:???
DB使えば?
970nobodyさん:2009/08/28(金) 15:51:17 ID:???
>>967
今北けど一言でいうとどうしたいの?
971954:2009/08/28(金) 15:54:25 ID:IryiXPVo
データベース覚えるとまた時間かかるので
とりあえず基礎技術だけ覚えるために
ログからの書き出しで行こうと思いました。
ファイル読む過程中ロックかけても駄目でしょうか?
972954:2009/08/28(金) 15:56:35 ID:IryiXPVo
>>970
ああああを含む書き込み番号を後で出力するために
変数に格納したいのです。
973954:2009/08/28(金) 16:01:07 ID:IryiXPVo
あげたphpの8行目の書き方間違えてるようですね・・・・
どうなおしたらいいんだろう。
974nobodyさん:2009/08/28(金) 16:08:37 ID:???
8行目間違えてるってなんで?
975nobodyさん:2009/08/28(金) 16:09:40 ID:???
>>972
<?php
$keyword = "ああああ";
$log = file("img.log");
$hit = array();
foreach ($log as $value) {
$tmp = explode(",", $value);
if (preg_match("/^".$keyword."$/", $tmp[6])) {
$hit[] = $tmp[0];
}
}
var_dump($hit);
?>
こういうこと?
976954:2009/08/28(金) 16:18:52 ID:IryiXPVo
>>974
1行ずつ出力したら思った行動と違う結果が出てきたんです。
ちょっとその部分見つけた後いじりすぎてどこが間違ってたか
具体的に説明できないのですが。

>>975
記事部分だとそうなのですが
欲しいのはツリー部分の該当列番号なんです。
その9番記事が格納されている
ツリーログの0含めて3番目が出力されるのが正解だと思います。
説明足らずですいません。
977nobodyさん:2009/08/28(金) 16:21:49 ID:???
>>976
<?
header("content-type:text/plain;charset=euc-jp"); $keyword = "ああああ";
$treelog = file("./tree.log");
foreach(file("./img.log") as $line){
$tmp = explode(",", $line);
$log[$tmp[0]] = $tmp;
}
$threadcount = count($treelog);//スレッド数をカウント
for($i=0; $i<$threadcount; $i++){
$writing = explode(",", $treelog[$i]);
$writingcount = count($writing);
for($j=0; $j<$writingcount; $j++){
$rrrr = trim($writing[$j]);
if(mb_ereg_match($keyword,$log[$rrrr][6])){
$hit = TRUE;
}
}
if($hit == TRUE){
$hitthreadline .= $i;
$hit = FALSE;
}
}
echo "$hitthreadline";
?>
こんな感じか?
できるだけそのまま書いてみた。
978977:2009/08/28(金) 16:22:32 ID:???
>>977
header("content-type:text/plain;charset=euc-jp");
は無視してちょ...。
979954:2009/08/28(金) 16:25:49 ID:IryiXPVo
>>977
そうです、その動作です。
間違ってると思ってた8行目の動作はあっておりました、すいませんでした。
ちょっと回答ログ見直してどこがおかしかったか見直してみます。
980954:2009/08/28(金) 16:28:02 ID:IryiXPVo
肝心のお礼忘れておりました、
本当にありがとうございました。
これで前進できそうです。
981954:2009/08/28(金) 16:48:59 ID:IryiXPVo
申し訳ありませんが最後にもう一つ教えて下さい。
$rrrr = trim($writing[$j]);
ここで空白が入ってうまくいってなかったようなのですが
$writing = explode(",", $treelog[$i]);//1スレッド分の記事番号を$writingに格納
ここで配列に格納したはずなのになぜ空白が入る余地があるのでしょうか?
982954:2009/08/28(金) 16:50:11 ID:IryiXPVo
$rrrr = $writing[$j];修正前
$rrrr = trim($writing[$j]);修正していただいた後

補足を
983nobodyさん:2009/08/28(金) 16:56:25 ID:???
>>982
空白?については判らないけど、
trimなしでうまくいかなかったのは、fileで読み込むと改行コードも入るからだよ。
たとえば、1行目の「18」は実際には「18<改行コード>」になっていた。

$log[$rrrr]は、$log[18]ではなく$log[18<改行コード>]を取得しようとしたが、そんな要素はないので。
それと$logのキーの問題の2箇所がまずかった。
984nobodyさん:2009/08/28(金) 17:03:01 ID:???
>>980
とりあえずお礼ついでに次スレたのんだ
985nobodyさん:2009/08/28(金) 17:05:23 ID:???
     __      _____  r―‐┐┌――┐         _
  / ∠___,  |______ | /_/7 /  7 厂| | く\     ||
  l   ___  |         | | _/ 〈_ L/ [_|   ヽ」┌─┘└─┐
  | |___| | ____| | | 口 口 | /Z_冂_ 〈\.└─┐┌┐│
  l   ___  | |         | | 口 口 l〈_,r┐┌┘ \/__| L_」 |_
  | |___| | | | ̄ ̄ ̄ ̄ |┌ー┐|┌ ┘└┐   |__  ___|
  l   ___  | | |         ||   ||└ ┐┌┘  / 〉   / \
  | |___| | | ヽ____/| ||   ||   | |   / /  //\ \__
  l______| ヽ_____ノ |.」   [__|   |_.」  く_/ く_/   \_ノ
  _             _       _        _
  | |        __| |__     | |      __| |__
  | |         |__  __|   | |        |__  __|
  | |        __| |__     | |         | |  __
  | |         |__  __|   | |         | | └─‐┘
  | |    _   ___| |_       | |    _   / /
  l ヽ__/ |  /┌┐ _ \   l ヽ__/ |   / /  |ヽ___
   \__/   ヽ、二__ノ  ヽ/     \__/ ∠_/  `ー――'
986nobodyさん:2009/08/28(金) 17:06:54 ID:???
俺がスレ建てるから待ってろ
987nobodyさん:2009/08/28(金) 17:12:21 ID:???
hore

【PHP】下らねぇ質問はID出して書き込みやがれ 87
http://pc11.2ch.net/test/read.cgi/php/1251447028/
988nobodyさん:2009/08/28(金) 17:13:33 ID:???
>>986
コピペしたままはろうとすると専ブラじゃ制限にかかるようにみえるが
きっちり32ラインになるようにテンプレ作られてるんだよ
>過去スレ、関連スレ、FAQなどは>>2-10辺り
これを抜かすのは関心しないな
どうせ削るなら誰も使ってない質問用テンプレ消せばよかったのに
989954:2009/08/28(金) 17:15:34 ID:IryiXPVo
ご説明ありがとうございます、
お礼にスレ立てしようとしたんですがp2だと
ちょっとスレ立て項目見当たらないので
少しお待ちください、検索続けてみます。
990nobodyさん:2009/08/28(金) 17:16:35 ID:???
>>989
もう>>986が立てたからいらないよ
991954:2009/08/28(金) 17:16:54 ID:IryiXPVo
ああ、立ってた。
992nobodyさん:2009/08/28(金) 17:20:00 ID:???
>過去スレ、関連スレ、FAQなどは>>2-10辺り

別にこんなの見ないしどうでもいいに一票入れとく
993nobodyさん:2009/08/28(金) 17:22:22 ID:???
姉妹スレDAT落ちじゃん
994nobodyさん:2009/08/28(金) 17:23:45 ID:???
えー・・・
過去・関連スレはともかく
関連リンクやFAQは重要じゃないか
995nobodyさん:2009/08/28(金) 17:24:34 ID:???
その一文自体は要らないだろ
996nobodyさん:2009/08/28(金) 17:25:36 ID:???
書くなら>>1にかかないと意味ないしな
997nobodyさん:2009/08/28(金) 17:26:34 ID:???
いる
>質問者はまず>>1を良く読むこと(必須!)
>次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。
だけだと>>1にしか目がいかない
998nobodyさん:2009/08/28(金) 17:41:49 ID:???
普通、質問する前に過去スレ過去ログを調べるのが当たり前だから不要
999nobodyさん:2009/08/28(金) 17:44:11 ID:???
| 1.文字コードは何を使えばいいの?
| →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。

今ならもう UTF-8 のみでいいのでは
1000nobodyさん:2009/08/28(金) 17:45:36 ID:???
>>998
そりゃお前の普通だろw

1000GET
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。