ヘッドライン(RSS)

世の中の有象無象に嫌気がさしたからPHPやるよ・・・・・

1: 名無しさん@おーぷん 2015/10/09(金)09:55:42 ID:WZg
やるのはおーぷん2chのdatファイルダウンロードしてそのdatを使ってなんか出来たらいいなぁみたいな感じです

最低限求められるスキル
phpインストールして「hello world」表示出来る程度
mysqlインストールして書き込み読み出し、後はソートしたらまあ色々出来る程度

正直今回は細かく教えるって言うよりダラダラやるだけのスレです
完成するかも分かりません

・以前僕が建てたスレ
暇なのでPHPでプログラミング講座やるおー
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1422591541/

ここでphpの講座スレ建てたものだけどit速報にまとめられてたの気づいて見た結果
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1430891351/

3: 名無しさん@おーぷん 2015/10/09(金)10:02:05 ID:nZO
総研じゃないのか

4: 名無しさん@おーぷん 2015/10/09(金)10:02:28 ID:WZg
>>3
何それ

7: 名無しさん@おーぷん 2015/10/09(金)19:27:48 ID:WZg
さてやります
取り敢えずdatの取得部分からやっていきます
まず適当に作業用フォルダ作ります
自分だとxamppの公開用ディレクトリにphpとか適当なフォルダ作ってその中に作業用フォルダを作成しています
取り敢えずファイル名は「open2ch_dat_get」にしました
http://i.imgur.com/NySPgff.png

8: 名無しさん@おーぷん 2015/10/09(金)19:35:16 ID:WZg
そしたらopen2ch_dat_getフォルダ内に「open2ch_dat_get.php」っていうファイルを作ります
取り敢えず今回はこのファイルで取得用のphpコード書き込んでいきます

今こんな感じ
http://i.imgur.com/UUbAgSC.png

9: 名無しさん@おーぷん 2015/10/09(金)19:44:30 ID:WZg
んでさっき作った「open2ch_dat_get.php」にhello,worldって表示出来るようにこんな感じに書き込みます
http://i.imgur.com/Ge4KHAj.png

これ入力できたら自分の場合だとxamppの公開用ディレクトリに「php」フォルダ作ってその中に「open2ch_dat_get」ってフォルダ作って作業してるので
http://localhost/php/open2ch_dat_get/open2ch_dat_get.php」ってブラウザのURL欄に入力して
これが表示されたら取り敢えずおk
http://i.imgur.com/FjIyK1b.png

10: 名無しさん@おーぷん 2015/10/09(金)19:48:07 ID:WZg
一応参考までに
http://i.imgur.com/TIuB2Zl.png

11: 名無しさん@おーぷん 2015/10/09(金)19:51:39 ID:WZg
今回はvipのスレ限定で取ってく感じでやります
で、スレット一覧はここから取得できます。
http://open2ch.net/news4vip/subject.txt

12: 名無しさん@おーぷん 2015/10/09(金)19:54:44 ID:WZg
と、思ったけどやっぱり統計君から取ってきたいと思いますw
統計君ってな~にって人は
http://open2ch.net/dev/toukei.cgi?d=2015-10-09
これ見てもらえば分かります。
http://open2ch.net/dev/toukei.cgi?日にちとかサーバー名(VIPならnews4vip)
で過去スレを持ってこれます

13: 名無しさん@おーぷん 2015/10/09(金)19:56:33 ID:WZg
統計君から今日(2015/10/09)のVIPのスレ持ってくる方法は
http://open2ch.net/dev/toukei.cgi?m=thread&d=2015-10-09&bbs=news4vip
こんな感じで持ってこれます

14: 名無しさん@おーぷん 2015/10/09(金)19:57:49 ID:WZg
urlのオプションに「sort=time」で並び替えることで時間ごとにソートできます。

http://open2ch.net/dev/toukei.cgi?m=thread&d=2015-10-09&bbs=news4vip&sort=time

15: 名無しさん@おーぷん 2015/10/09(金)20:12:54 ID:WZg
そしたらさっき書いた「open2ch_dat_get.php」を全部削除してこんな感じでコードを入力
共有用にコードパッド使ったけどなんかエラー出てるけど気にしない
http://codepad.org/VKUeYUV9

ブラウザでこんな感じで表示されてればおk
http://i.imgur.com/p8y9GjU.png

16: 名無しさん@おーぷん 2015/10/09(金)20:21:12 ID:WZg
今回使う統計君はHTMLで記載されているの「PHP Simple HTML DOM Parser」っていうライブラリを使ってスクレイピングって奴でスレッドを取得していきます。
ライブラリのダウンロードはこっからできます
http://sourceforge.net/projects/simplehtmldom/files/
http://i.imgur.com/FfY2she.png

17: 名無しさん@おーぷん 2015/10/09(金)20:29:05 ID:WZg
ダウンロードされた「simple_html_dom.php」を「open2ch_dat_get.php」と同じフォルダにぶっ込む
http://i.imgur.com/qex6rxF.png

そしたら「simple_html_dom.php」をテキストエディタで開いて66行目のMAX_FILE_SIZEの600000って言う数字を適当に増やして保存
http://i.imgur.com/vI2iPl0.png

増やした結果がこちら
http://i.imgur.com/SGaP0ZE.png

18: 名無しさん@おーぷん 2015/10/09(金)20:32:32 ID:WZg
完了したらライブラリ読み込ませるために「open2ch_dat_get.php」に「require_once ‘simple_html_dom.php’;」を一番上に追加
http://i.imgur.com/oMxTkrt.png

19: 名無しさん@おーぷん 2015/10/09(金)20:38:34 ID:WZg
simple_html_domの基本的な使い方の説明はこれ見てもらとして説明省きます
http://so-zou.jp/web-app/tech/programming/php/library/simplehtmldom/

20: 名無しさん@おーぷん 2015/10/09(金)20:55:39 ID:WZg
「open2ch_dat_get.php」さっきまでやってたのは、ただソースをコピーして表示してただけだったのの
ライブラリを使って必要なURLだけを表示させてみる
「open2ch_dat_get.php」をこんな感じで改変
http://i.imgur.com/bfdTGN7.png

そいでブラウザで表示してみてこんな感じに取得できてれば成功
http://i.imgur.com/ZHNRug0.png

21: 名無しさん@おーぷん 2015/10/09(金)21:10:39 ID:WZg
表示が気持ち悪いんでこんな感じでphpのソースを書きなおして
http://i.imgur.com/SmTAOmx.png

はい、ブラウザで表示するとそこそそこ綺麗に表示されました
http://i.imgur.com/q3lbDY0.png

さて、今日はこれでおしまい
良い子は寝る時間なのでそろそろ寝ます
お休みなさい

22: 名無しさん@おーぷん 2015/10/10(土)17:52:10 ID:Gkp
それじゃあ今日もボチボチ始めていきます
取り敢えず終了は20:00頃予定しています
前回まででスレッドの取得は出来たので今回はdatのDLする部分作っていきます。
DLしたdatをDBに保存して、使いやすい様に加工したりしたんだけど、そこまで行けるかは時間的に微妙だと思います。

23: 名無しさん@おーぷん 2015/10/10(土)17:56:01 ID:Gkp
現在のファイル内容

「oepn2ch_dat_get.php」←昨日まで編集してたやつ
「simple_html_dom.php」←htmlスクレイピングに使えるライブラリ
「test.php」←昨日ここに書き終わってから作ったやつ。色々テスト様に使えるファイルいつも作ってやってるので基本的には用なし。
http://i.imgur.com/oMMFd7K.png

24: 名無しさん@おーぷん 2015/10/10(土)18:09:55 ID:Gkp
それじゃあdatを取得して書き込む処理書き込みたいんだけど、取得したurlに最後に「l10」ってのがあるのでそれを正規表現で取り除いていきます。
l10って何よって人は「http://hayabusa.open2ch.net/test/read.cgi/news4vip/1444352142/l10」←このURL試してもらえばわかると思うけど最新の10スレだけ持って来いみたいなオプションです。
というわけで、l10だけ取り除くような正規表現を書き込んで表示させてみます。

「oepn2ch_dat_get.php」をこんな感じで書き換える
http://i.imgur.com/fIgFoEW.png

するとこんな感じでURLの一番最後にあった「l10」を取り除いた感じでURLを取り出せます。
http://i.imgur.com/muXbCxf.png

25: 名無しさん@おーぷん 2015/10/10(土)18:19:44 ID:Gkp
URL取り出せてしまえばfile_get_contents()でURL指定して全部持ってくることも出来ます。
流石に一気に総当りでアクセスするのはあれなんで今回は一個だけ持ってくるように書き換えます。

「oepn2ch_dat_get.php」をこんな感じで書き換える
http://i.imgur.com/tcgtb2E.png

するとこんな感じで表示できる
http://i.imgur.com/QxcX7ra.png
おーぷん2chのHTMLコードをコピーしたものが表示されているだけなので、いつも見ているおーぷん2chが表示されています。

それでここにdatのURLに変換する正規表現を書いてdatに直接アクセスするように書き換えて行きます。

26: 名無しさん@おーぷん 2015/10/10(土)18:49:01 ID:Gkp
datのurlの形式は
http://hayabusa.open2ch.net/test/read.cgi/news4vip/1444352142/」のURLを

http://hayabusa.open2ch.net/news4vip/dat/1444352142.dat」こんな感じで書き換えてやる必要あるので正規表現で板名とスレッドの番号だけ取得する正規表現を考える
2chのURL形式だと「http://鯖名.open2ch.net/test/read.cgi/板名/スレッドの番号/」なんだけどおーぷんの場合は鯖名は飾りだったと思うので無くても取得できます(今後仕様変更でどうなるかは分からない)
なのでdat取得するURL形式は「http://open2ch.net/板名/dat/スレッドの番号.dat」で取得します。

「oepn2ch_dat_get.php」をこんな感じで書き換える
http://i.imgur.com/5BDCRr5.png

するとこんな感じに表示される
http://i.imgur.com/1351KGC.png

27: 名無しさん@おーぷん 2015/10/10(土)18:53:12 ID:7sP
Pythonは?

29: 名無しさん@おーぷん 2015/10/10(土)18:55:04 ID:Gkp
>>27
そう言えばやるって言ってたっけw
その内誰かやるから大丈夫だよw

28: 名無しさん@おーぷん 2015/10/10(土)18:54:22 ID:Gkp
これでdatのURLは取得できたので、あとはこのdatのURLをfile_get_contents()に放り込んでやっていきます
ただ全部URLをブラウザで実行して待ってるのはしんどいので、ここからはcmdを使った作業用に書き換えながら作業していきます。

30: 名無しさん@おーぷん 2015/10/10(土)18:57:53 ID:Gkp
今検索してみたんだけどホントにpythonやってる奴居ないのな
まあ俺も嫌いじゃないけど、使いみちあんま思い浮かばないしな
おんjでもやってる奴居ないのかな?

31: 名無しさん@おーぷん 2015/10/10(土)19:20:05 ID:7sP
PHPがwebなら
Pythonは数学系だな

33: 名無しさん@おーぷん 2015/10/10(土)19:21:43 ID:Gkp
>>31
PHPがwebってのは完全同意
pythonが数学ってのは?って感じ

32: 名無しさん@おーぷん 2015/10/10(土)19:20:39 ID:Gkp
datを落とす作業書く前にdatって言うフォルダを作って
http://i.imgur.com/zzLC292.png

さらにその下の階層にnews4vipってフォルダを作りそこにdatを保存していきたいと思います。
http://i.imgur.com/yzjlazO.png

34: 名無しさん@おーぷん 2015/10/10(土)19:33:58 ID:Gkp
取り敢えずdatを一つだけ持ってきて内容を表示させてみます。

「oepn2ch_dat_get.php」をこんな感じに書き換えます
http://i.imgur.com/3NyKLuw.png
28行目の「//$dat_text = mb_convert_encoding($dat_text, “UTF-8”, “SJIS”);//SJISからUTF-8にエンコード」ってのはdatはSJIS形式なのでUTF-8に変換しているだけです。
今のとこ問題ないののでコメントアウトしています。

で、実行したらこんな感じで表示される
http://i.imgur.com/JAiS4Qc.png
これはdatファイルをコピーしたやつをブラウザで表示してるだけです

で、今日は最後にこのdatファイルをさっき作った「news4vip」フォルダに適宜保存していく感じの処理を書き込みます。

35: 名無しさん@おーぷん 2015/10/10(土)19:35:09 ID:Gkp
あと、datを保存する処理はcmdで実行することを前提で書き込みます。

36: 名無しさん@おーぷん 2015/10/10(土)20:09:23 ID:Gkp
で、こんな感じでソースを書き換えて終了
http://i.imgur.com/hRQhSkQ.png

cmdでphpを実行するときはこんな感じ
http://i.imgur.com/XmUu363.png
ようは実行したい階層に移動して「php 実行したいファイル名.php」みたいな感じです

実際に実行するとこんな感じになって
http://i.imgur.com/V2udHTc.png

取ってきたdatファイルのコピーが生成されております
http://i.imgur.com/aAzt4nv.png

後は全部ダウンロードされると勝手に終了すると思います。
終了待てない人はCtrt+Cで強制終了もできます。
というわけで、今日は時間なので終わりです。
でわでわ

37: 名無しさん@おーぷん 2015/10/10(土)20:15:53 ID:Gkp
今日までの分のソースコード
http://codepad.org/dsJdbpF4

38: 名無しさん@おーぷん 2015/10/11(日)19:06:38 ID:00h
続きやっていきます
今日の予定は21:00です
で、気になったとろこがあるので適当に修正して行きます。
取り敢えず一番気になったとろこfile_get_contentsで、接続するときエラーが出た場合5回くらい接続を試みてそれでも失敗したら強制終了する感じの処理を書き込みたいと思います。

39: 名無しさん@おーぷん 2015/10/11(日)20:07:01 ID:00h
それでこんな感じの簡単な関数を書いてみました
仕組みは単純でweb_get(取得したいURL)みたいな感じでやると成功したらその習得したテキストだったりを返す
失敗したらfalseを返す感じの仕組みです
因みに「file_get_contents」は存在しないテキスト参照したりした場合はfalseを返すのでifなどで判断できます。
後はサーバー側のエラーなんかも取得できるんですけど、その辺は関数化したので後で書き換えてく感じです。
http://i.imgur.com/1ioBrsB.png

そしてfile_get_contentsのところをweb_getに書き換えて
http://i.imgur.com/kgWZFlO.png

実際に稼働させて見て問題なければ多分大丈夫です
http://i.imgur.com/bOdQpF2.png

40: 名無しさん@おーぷん 2015/10/11(日)20:16:42 ID:00h
次にこの間まで作っていた部分も関数化していきます
具体的には時間と統計君のURLを指定したら自動的に持ってくるような感じにします
って言っても殆ど変わってませn
単純に名前付けてそれで終わりです。
http://i.imgur.com/OrCB4zd.png

41: 名無しさん@おーぷん 2015/10/11(日)20:22:06 ID:Jha
今度はcakeやっておくれよ

42: 名無しさん@おーぷん 2015/10/11(日)20:22:53 ID:00h
>>41
やったことねーよw
解説サイトその辺にあるから読んだらいいんじゃね
っていうかcakeって必要か?

43: 名無しさん@おーぷん 2015/10/11(日)20:25:02 ID:hvk
>>42
それなりの規模なら必要だな

45: 名無しさん@おーぷん 2015/10/11(日)20:29:00 ID:00h
>>43
趣味グラマーだから大規模な開発なんてやること無いしな
便利になるとは聞いてるけど、PHPにテンプレートエンジンあんま必要性を感じてなくて全然やってないな
効率上がるならやりたいけど

44: 名無しさん@おーぷん 2015/10/11(日)20:27:43 ID:00h
で、次にデータベース作っていきます
凄い説明しにくいんだけどlampインストールしてれば勝手について来るんでどうにか頑張ってphpmyadminをブラウザで開いて下さいw
色々見せたいんだけど殆ど見せられないので隠してありますがご了承下さい
ログイン画面の左の印のとこをクリックすると新しいデータベースが作れます
http://i.imgur.com/qGd1TMW.png

51: 名無しさん@おーぷん 2015/10/11(日)21:10:35 ID:00h
>>44
phpmyadminのリンク見つけたので貼っておきます
自分の場合は「http://localhost/xampp/」から行けました
http://i.imgur.com/BZOeoYe.png

46: 名無しさん@おーぷん 2015/10/11(日)20:33:14 ID:00h
んで、今回はこんな感じでデータベースを作成
http://i.imgur.com/ogzLyzX.png

47: 名無しさん@おーぷん 2015/10/11(日)20:49:47 ID:00h
そしたら作成されたデータベースにテーブルの作成
テーブル名とカラム数をこんな感じで指定する感じで作成できます
カラム数は何を保存したいかで変わってくるんですが
今回は「ID(単純に連番でふっていく)」「保存先」「datのファイル名」「スレタイ」「レス数」みたいな感じで5カラムのテーブルを作ります。
http://i.imgur.com/9gNkHDH.png

んでこんな感じでテーブルをざっくり作成
http://i.imgur.com/usTJ5pj.png

50: 名無しさん@おーぷん 2015/10/11(日)21:03:49 ID:00h
>>47
あとテーブルをざっくり作成の右下の「保存」の所でテーブル作成できます。

48: 名無しさん@おーぷん 2015/10/11(日)20:54:26 ID:00h
時間が無いので今日はこれで終わりです。
明日はdatを解析してスレタイを抜き取る関数の作成と、時間があったらデータベースに書き込んでいく処理の部分をやってく感じになるかと思います。
でわでわ

49: 名無しさん@おーぷん 2015/10/11(日)20:59:13 ID:00h
後今日のソースコードとファイルの中身
http://codepad.org/J7WHfLMS
http://i.imgur.com/Do3BAAn.png

ファイルは変わってないんでまあどうでもいいですね

52: 名無しさん@おーぷん 2015/10/11(日)23:05:38 ID:Jv9
phpは便利だわ
ライブラリとフレームワークの充実さもそうだけど
なんといってもインタプリタだから
デバッグ超楽なんだよなぁ

55: 名無しさん@おーぷん 2015/10/12(月)16:38:53 ID:lL2
>>52
そう言えば最近インタプリタとコンパイラとか意識しなくなったな

>>53
まあ適材適所でしょ
GUIに関して言えば、GUIプログラミング自体が面倒くさいし個人的には好かんけど
ビックデータの解析?やった事ないなwwww

>>54
=は代入
==は方は含めないで判断
===は型も含めて同じか判断
型とかあんま考えたくない人は==でいいだろうし、気になる人は===使えばいいんじゃね
小難しく考える必要無いって。適当に生きていきましょうやw

53: 名無しさん@おーぷん 2015/10/12(月)14:08:10 ID:Rgn
便利さならpythonのほうが上だろよ
PHPはweb用の言語だからね
ビッグデータの解析とかGUI作成とかには
あまり使われないでしょ?
まあ、web関係ならPHPのほうがやっぱり便利だけどね

54: 名無しさん@おーぷん 2015/10/12(月)14:09:02 ID:VU2
=と==と===の使い分けだけでも頭痛くなる

56: 名無しさん@おーぷん 2015/10/12(月)16:55:49 ID:lL2
続きやっていく前に、データベースのテーブルのカラムに2つ追加しました
itaってのがν速VIPみたいな板名を書き込むカラム
regist_timeってのが登録した時間を書き込むカラムになります
あと、アニメみたいのでもう少し放置しますw
http://i.imgur.com/QeIKntY.png

57: 名無しさん@おーぷん 2015/10/12(月)18:29:19 ID:lL2
続きやっていきます。
今日は取得したdatのデータを書き込んで行く関数の作成になります
取り敢えずdb_resist.phpって空のファイルを一つ追加します。
http://i.imgur.com/PJehQOC.png

んで中身をこんな感じで書き込みます
まだデータベースの接続して失敗したかの判断しかしていません
http://i.imgur.com/TICkYMD.png

58: 名無しさん@おーぷん 2015/10/12(月)18:39:08 ID:lL2
次にデータベースの書き込みのクエリーを作成していきます。
データベースの書き込み方はmysqliteと大体同じで、sqlってので書き込みます
このスレ「http://hayabusa.open2ch.net/test/read.cgi/news4vip/1430891351/」でスゲー適当に解説してるので分かると思うけど
insertってので大体書き込めます

んで、一からsql書き込んでも良いだけど面倒くさいのでまずphpmyadminってので自動生成してそれを元に書き換えて行きます
それでテーブル開いたら印のところのsqlをクリック
http://i.imgur.com/YYVpDmY.png

このページが開いたら、データベースへの書き込みの時は印のinsertってのをクリック
http://i.imgur.com/W2ASMG3.png

するとこんな感じでinsert文の雛形が出てきます
http://i.imgur.com/EZLV8Kx.png

後はこのinsert文の雛形を書き換えてPHPコードに書き込んでいきます。

59: 名無しさん@おーぷん 2015/10/12(月)18:52:57 ID:lL2
一応最初はデータベースにちゃんと書き込めるか簡単なクエリー文でテスト敵に書き込んでみます
で、こんな感じに書き込み関数を編集
http://i.imgur.com/S7vyqA8.png
最後の$dbh->query($query)ってのでクエリー文を実行しています

で、実行した結果がこちら
http://i.imgur.com/rlv8XGS.png
表示ってタブを開くとテーブルに登録されている中身が見れます
IDは自動採番、regist_timeは登録された日にちが自動で登録されるので特に問題ありません
あと、thread_numに0が入ってるけど何でかよく分からないので放置ですw

因みにもう一回実行してみるとこんな感じ
http://i.imgur.com/5V9D7OJ.png
IDの自動採番もちゃんと機能しているので特に問題なさそうです

ここから登録用のちゃんとしたクエリー文を作っていきます。

60: 名無しさん@おーぷん 2015/10/12(月)19:43:09 ID:lL2
本番用のクエリーを作成していきます
で、さっきのままのdat_main_regist()だとデータベースに登録したとき文字化けするのでset_charsetでデータベースに登録するときの文字コードをUTF-8に設定しました
全体的に書き換えてこんな感じ
http://i.imgur.com/Q1ODHmC.png
dat_main_regist関数に引数を持たせて登録したい部分だけ自由に決められるようにしました
後は特に変化はありません

で、実際に2,3回起動してみてこんな感じで取り敢えず成功
http://i.imgur.com/GbKNskh.png
赤印の2つはミスったやつなので気にしないで下さい
青印3つみたいになってれば成功です

特に問題無かったので続けます

61: 名無しさん@おーぷん 2015/10/12(月)20:02:59 ID:lL2
あとはdatをダウンロードした後にdat_main_regist関数を呼び出して記録していく感じにopen2ch_dat_get.phpを修正していきます
それでこんな感じに修正
http://i.imgur.com/SEvqaFh.png
スレッドタイトルはdatの解析部分作らないと分からないので適当な文字列で置き換えてます
レス数は正規表現使えば分かると思うけど面倒くさいのでこれも適当な数字で置き換えてます。

それで実行する前に一旦データベースを空にします
空にする方法は該当するテーブルを開いて、操作タブを開いて、テーブルを空にするを押すとテーブルの初期化が出来ます。
http://i.imgur.com/8ujl9Dg.png

データベースが空になったを確認したらopen2ch_dat_get.phpを実行
http://i.imgur.com/Ix3YDAy.png

それでデータベースを確認すると保存された分のdatのデータがデータベースに記録されます
http://i.imgur.com/8jcoYlm.png

62: 名無しさん@おーぷん 2015/10/12(月)20:05:05 ID:lL2
明日はデータベースに登録する部分(スレタイ、レス数)のdat解析の部分を作っていきます
今日は時間ないのでここで終わりです
乙乙

63: 名無しさん@おーぷん 2015/10/12(月)20:09:35 ID:lL2
今日の分のソースコードとファイルの中身
open2ch.dat_get.php
http://codepad.org/ig6eRX7K

db_resist.php
http://codepad.org/WcVeaymd

ファイルの中身
http://i.imgur.com/H7Vn14q.png

64: 名無しさん@おーぷん 2015/10/13(火)17:52:23 ID:lJg
それじゃあ続き始めます
今日はopen2ch.dat_get.phpを編集してdatを解析してレス数とスレタイを抜き出す部分を作っていきます。
まずレス数を抜き出す部分から作っていきます。
それでまずこんな感じの関数を作りました。
http://i.imgur.com/2v9Q9jU.png
explode関数を使うことで特定の文字列を起点に配列に収めることが出来ます。
例えば「1234,456,678」みたいな文字列を「,」で区切って配列に収める事が出来ます。
datファイルの場合、1レスごとに改行してあるので改行の文字コード「n」を起点にして配列に納めています。
デバッグ様にvar_dumpで表示して、exit()で動作を停止しています。

この関数が出来たらtokei_dat_get関数にこんな感じで追加
http://i.imgur.com/rtCl0t3.png
datを取得した直後に追加する感じです

そしたらブラウザ上で実際に実行してみて、表示されたらソースを表示してみてこんな感じになってれば成功
ブラウザによっては表示の仕方が違うかもしれません
因みにChromeで表示しています。
http://i.imgur.com/Doaz8i9.png
array()の数字が配列数を表しており、今回の場合はレス数をだと思って良いいです。
更に大カッコでくくってある「[0]=>string(131)」みたいな奴が配列番号と型と文字数(byte)を表しています。

あとはレス数を返すために配列数をカウントしてその数字をreturnで返してこんな感じにします
http://i.imgur.com/RKXSQjf.png
count()関数で配列数を数えてreturnで返して居るだけです

そしてtokei_dat_get関数のデータベースに登録する部分に取得したレス数を追加するとこんな感じ
http://i.imgur.com/DP0wcxL.png
それでこれを実行すれば多分データベースにレス数も記録できるようになると思いますが
面倒くさいのでスレタイの取得の関数を作ってからやります

65: 名無しさん@おーぷん 2015/10/13(火)18:10:52 ID:lJg
次にタイトル部分の取得なんですがさっきの関数と殆ど同じです
因みにdatの何処にタイトルがあるかというと一番最初の行の一番最後にあるので
explodeで一行ごとに分解した0番めの配列の文字をもう一度explodeで「<>」ごとに配列に入れて一番最後は4確定なのでその変数を返すだけです
で、こんな感じの関数を作りました
http://i.imgur.com/70kLpCV.png

で、最後にtokei_dat_get関数にスレタイをデータベースに記録する部分にこんな感じで追加して終わりです。
http://i.imgur.com/i5EdwOC.png

取り敢えずここまででdatを取得してデータベースに保存するって処理の流れは完了です
一旦実行させて、問題ないか様子見たいのでお風呂に入りながら実行させて放置してみます。

でわ、一時休憩です。

66: 名無しさん@おーぷん 2015/10/13(火)18:26:21 ID:lJg
スイマセン、文字コードの問題でdat_thred_title_getの関数を修正してお風呂に入ってきます。
http://i.imgur.com/QJLSEay.png
datファイルはsjis形式なのでutf-8にmb_convert_encoding関数でエンコードしてから返す感じにしました

あとレス数を数える関数も、一行分余計な配列入るっぽいんで-1して返すようにしました
http://i.imgur.com/pi64nOf.png

67: 名無しさん@おーぷん 2015/10/13(火)19:44:20 ID:lJg
上手く行ったけど面倒なんで今日はここで終了ですw

68: 名無しさん@おーぷん 2015/10/14(水)15:29:23 ID:SIW
あんまり反応がないねぇ

73: 名無しさん@おーぷん 2015/10/14(水)19:14:54 ID:Oyk
>>69
インジェクション対策はプリペアドステートメント使えばどうにでもなるけど、この部分の公開は予定してないから別にいいかなとおもてw

>>68
教えるつもりでやってないしレベルが高いわけでも無いし適当だし見る人居ないのはまあお察し

69: 名無しさん@おーぷん 2015/10/14(水)15:34:58 ID:k84
SQLインジェクション対策しろやド素人

70: 名無しさん@おーぷん 2015/10/14(水)15:36:11 ID:SIW
ひぇー
反応があったと思ったら
こりゃまた手厳しいw

71: 名無しさん@おーぷん 2015/10/14(水)15:40:04 ID:k84
せめてプレースホルダーを使え
欲を言えばmysqli関数群を直接使うんじゃなくてPDOを使え

74: 名無しさん@おーぷん 2015/10/14(水)19:16:25 ID:Oyk
>>71
あ、出てた

72: 名無しさん@おーぷん 2015/10/14(水)16:36:43 ID:CBa
ちなみにCakePHPでDB保存するとしたらこんな感じ

$DatMainTable->save(
array(
‘dir’=>$dir,
‘dat_name’=>$dat_name,
‘thread_name’=>$thread_name,
‘thread_num’=>$thread_num,
‘ita’=>$ita,
)
);

75: 名無しさん@おーぷん 2015/10/14(水)19:17:37 ID:Oyk
>>72
なる程、最初からインジェクション対策は万全な訳ね

76: 名無しさん@おーぷん 2015/10/14(水)19:27:14 ID:Oyk
始める前にweb_get()で接続失敗した時false返しているのに判定してなかったのでちょこっと修正
http://i.imgur.com/1zY6dZ1.png

80: 名無しさん@おーぷん 2015/10/14(水)20:34:06 ID:Oyk
>>76
あとif文で結果を反転させないとダメでした
こんな感じで書き直しですw
多分これで大丈夫だと思います
http://i.imgur.com/tUac9G0.png

>>77
あと年、月、日を入力してその日を持ってくる感じにするでした
あとxamppも切っちゃダメですw
データベースに書き込まないとダメなんでaptcheとmysqlだけは起動しといて下さいw(別にデータベースなんてコマンドで十分て人はapacheは切っても大丈夫だと思います)
で、こんな感じに修正
http://i.imgur.com/6xxZbqs.png

そいで今日の年月日をコマンドライン引数として持たせることで今日のdatとか持ってこれます
http://i.imgur.com/EUCOBsz.png

データベースも兼ね良好ですね(多分)
http://i.imgur.com/d9AWUtV.png

77: 名無しさん@おーぷん 2015/10/14(水)19:46:30 ID:Oyk
続きやりたいんだけど何やるのか考えてませんでしたw
取り敢えずコマンドライン引数に年と月を入力してその月のdatを持ってこれるように改造しながら結局何作るか考えてみたいと思います
因みにコマンドライン引数ってのは、phpを実行する時こんな感じにオプション的に文字をつけることで値を渡すことが出来るみたいな感じです
http://i.imgur.com/NrDuRRU.png

で、この引数を受け取って色々出来ます
一応いまtest.phpって言うテスト用のファイルあるのでこれで実験的にやってみます
んで、こんな感じの1文かきこんで
http://i.imgur.com/D0E9pRj.png

test.phpに適当な引数を付けて実行してみると
http://i.imgur.com/JAliLni.png
ちゃんと入ってるのが確認できます

これを応用してやっく感じになります

78: 名無しさん@おーぷん 2015/10/14(水)19:51:54 ID:Oyk
お腹痛いのでちょっとウンコしてきます

79: 名無しさん@おーぷん 2015/10/14(水)19:53:59 ID:Oyk
因みにcmdで弄る場合xampp切っても構いません
ここから暫くは、多分コマンドメインの操作になると思います

81: 名無しさん@おーぷん 2015/10/14(水)20:37:45 ID:Oyk
つうか何作ろうw

82: 名無しさん@おーぷん 2015/10/14(水)21:53:12 ID:Oyk
使い勝手悪いんで年月日板を入力したらその日のdatを持ってくる関数になりました
バグとかあると思うけど今日は面倒くさいんで終わりです
一応dat解析して画像をダウンロードする感じのツールに仕上げてみたいと思います
明日は何をするか分かりません
でわでわ
http://i.imgur.com/hddWdR6.png

83: 名無しさん@おーぷん 2015/10/15(木)19:58:26 ID:oLg
続き始めます
その前に昨日最後に関数化したんですが一箇所変数名間違ってたので修正しました
http://i.imgur.com/LLv8BuU.png

84: 名無しさん@おーぷん 2015/10/15(木)20:12:20 ID:ERt
担当者「CakePHPわかります?」
俺「知りませんがすぐにわかると思います。」
担当者「なぜそう言い切れるの?」
俺「すぐわかるように作られてるのがFrameworkだからです」

不採用

なぜなのか
ZendFrameworkはやってたのに・・・

86: 名無しさん@おーぷん 2015/10/15(木)20:19:53 ID:oLg
>>84
さぁw
採用担当でもプロでも無いからよく分からんw

85: 名無しさん@おーぷん 2015/10/15(木)20:19:10 ID:oLg
で、今日やりたいのは昨日みたいに年月日入力してその日のdat持ってくるのでもいいんだけど
複数日持ってくるのが面倒くさいのでその辺を何年の何月から何年の何月までみたいな指定でdatを持ってこれるようにしたいと思います。
今回は標準入力使ってその辺実装していこうと思っています。
で、こんな感じになります。
http://i.imgur.com/g6WNACO.png
fgets(STDIN)ってのでコマンドプロンプトからの入力を受け取ることが出来ます。←これが俗にいう標準入力ってやつ

んで結果はこんな感じ
http://i.imgur.com/lg2Kczi.png

87: 名無しさん@おーぷん 2015/10/15(木)20:27:44 ID:oLg
で、都合によりこんな感じで板を増やしていくことも可能です
http://i.imgur.com/FTBvScN.png

実行するとこんな感じ
http://i.imgur.com/s5zwHRS.png
大体さっきと同じ結果ですね
「2」を指定するとなんjも持ってこれるような感じです

88: 名無しさん@おーぷん 2015/10/15(木)20:49:41 ID:oLg
んで、何年何月から何年何月までスレを持って来いみたいな感じのも同じ要領で持ってこれます
んでソースの方乗せたいんですけどかなり単純作業になるんで明日うpします
今日はこれで終わりです

89: 名無しさん@おーぷん 2015/10/17(土)21:07:14 ID:I3q
昨日は書き込みできなくてスイマセン
時間の処理よく分からなかったので調べながら色々やってました
取り敢えずこんな感じにしてみました
http://codepad.org/nfU5Wh9G

で、変えたところというか標準入力の部分「trim(fgets(STDIN))」にしないと余計なものまで付いてくるのでここ変えました
あと時間の処理の部分なんですが最初
for(年++){
 for(月++){
  for(日++){
  }
 }

みたいな感じで考えてたんだけど、unixtimeに変換して使えば楽みたいなのでunixtimeで計算しています。
で、実際に実行してみるとこんな感じになります。

入力
http://i.imgur.com/nUq4Ohx.png

実行
http://i.imgur.com/mrS0NJu.png
とこんな感じで特定の日付から特定の日付まで表示してくれます
あとは日付と板を関数に入れて実行すると多分dat取ってこれるんじゃないかなという感じです

以上今日は終わりですw

シェアする

  • このエントリーをはてなブックマークに追加

フォローする