
前々から興味があったので、どーやってるのかなーと調べてみました。
案外簡単にできるっぽいので、色々と考え中です。
本当は2chでやってみたかったんですけど、時既に遅しですね。
なので潰れない限りありそうなオープン2chでやってみることにします。
INDEX
カテゴリを選ぶ
https://open2ch.net/menu/に行って左からカテゴリを選びます。
僕は怖い話とか好きなのでオカルトを選びました。
怖い話とか都市伝説とか知ってる人は教えて下さい
アドレスの端にsubject.txtをつける
https://toro.open2ch.net/occult/subject.txt
ってブラウザのアドレス入力するとこに貼り付けると
スレッドのタイトルとかレスの数とか書いてあると思います。
扱いづらいのでこいつらをナントカするコードを書きます。
とりあえず配列に変換する
多分デリミタじゃないと思うんですけど、
<>って1タイトルごとに書いてあるので
こいつをそれだと思って扱いましょう。
1 2 3 4 | $url = "https://toro.open2ch.net/occult/subject.txt" ; $getsled = mb_convert_encoding( file_get_contents ( $url ), "utf-8" , "auto" ); $sledres = explode ( "<>" , $getsled ); |
データの整理
1行ずつデータをそろえて置きたいので
データの整理をします。
1個目のデータがずれてたので、
filetitleのとこはそうなってます。
1 2 3 4 5 6 7 8 9 10 | foreach ( $sledres as $key => $val ) { if (preg_match( "/[0-9]{10}.dat/" , $val , $matches )) { $sledkeys [] = array ( "filekey" => $matches , "filetitle" => substr ( $sledres [ $key +1],0,-14) ); } } |
データが出来たので軽く抽出してみる
とりあえず検索できるデータが出来たので
これから今度は特定のワードで検索してみましょう。
1 2 3 4 5 6 7 | for ( $i =0; $i < count ( $sledkeys ); $i ++) { if ( strstr ( $sledkeys [ $i ][ "filetitle" ], "異世界" )) { var_dump( $sledkeys [ $i ]); } } |
この異世界のワードを好きなのに変えたり、配列に入れて
回して探したりしたりできますが・・・
CSVを定期的にDBにぶち込んでDBで検索かけるのが良いと思うます。
コードぜんぶ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <?php $url = "https://toro.open2ch.net/occult/subject.txt" ; $getsled = mb_convert_encoding( file_get_contents ( $url ), "utf-8" , "auto" ); $sledres = explode ( "<>" , $getsled ); $sledkeys = array (); foreach ( $sledres as $key => $val ) { if (preg_match( "/[0-9]{10}.dat/" , $val , $matches )) { $sledkeys [] = array ( "filekey" => $matches , "filetitle" => substr ( $sledres [ $key +1],0,-14) ); } } for ( $i =0; $i < count ( $sledkeys ); $i ++) { if ( strstr ( $sledkeys [ $i ][ "filetitle" ], "異世界" )) { var_dump( $sledkeys [ $i ]); } } |