メシのタネ

めしのたねになるIT情報配信サイト


【PHP】オープン2chからタイトルとdatをぶっこ抜く

,

  1. Webプログラム
  2. PHP
  3. 【PHP】オープン2chからタイトルとdatをぶっこ抜く
PHPサムネイル

getageta2
前々から興味があったので、どーやってるのかなーと調べてみました。
案外簡単にできるっぽいので、色々と考え中です。
本当は2chでやってみたかったんですけど、時既に遅しですね。
なので潰れない限りありそうなオープン2chでやってみることにします。

カテゴリを選ぶ

https://open2ch.net/menu/に行って左からカテゴリを選びます。
僕は怖い話とか好きなのでオカルトを選びました。
怖い話とか都市伝説とか知ってる人は教えて下さい

アドレスの端にsubject.txtをつける

https://toro.open2ch.net/occult/subject.txt
ってブラウザのアドレス入力するとこに貼り付けると
スレッドのタイトルとかレスの数とか書いてあると思います。
扱いづらいのでこいつらをナントカするコードを書きます。

とりあえず配列に変換する

多分デリミタじゃないと思うんですけど、
<>って1タイトルごとに書いてあるので
こいつをそれだと思って扱いましょう。


$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のとこはそうなってます。


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]);
    }
}

この異世界のワードを好きなのに変えたり、配列に入れて
回して探したりしたりできますが・・・

CSVを定期的にDBにぶち込んでDBで検索かけるのが良いと思うます。

コードぜんぶ

<?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]);
    }
}


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

PHP
魔王と行く! / Interface / Polymorphism / Ontology 深淵ガイドNew!!
Laravel
Laravel 12、「コード 1 行も書き換えず未来へ」──静かな革命の手順書New!!
Laravel
LaravelのMiddlewareって意味あるの?仕組み・使いどころ・やらかしまで整理してみたNew!!
Laravel
ServiceProviderって何してるの?DIの背後で動いてるやつの正体New!!
Laravel
LaravelのサービスコンテナとDI、「書いてるだけで動く」コードの正体
Laravel
Laravelのアーキテクチャ、実は誰もわかってない説