PHPのDOMを使って、サイトの更新状況を自動チェックしようと妄想しています。最近、RSSを意図的に設けてないサイトが増えているみたいで、更新状況をチェックするのはある意味、受難な時代に…爺のようなスキルのないものには特にね…グスン。
前回チェックとの差分を求める必要
サイトの更新状況チェックということは、前回と比較するという作業は避けて通ることができません。
PHPには、「配列」を使って差分を求める機能があり、これは便利!ということでちょっとメモとして残しておかなければ。
配列
爺の昔話です。ええ、1980年代の前半、PC-8001を使い始めたころのことです。ひとつの値を格納するbasic言語の「変数」に面喰ったのを覚えています。「変数」って数学の言葉というようなことしか記憶が無く、そもそも縁遠いとか好きになれないコトバでありました。その「変数」が束になったというか、複数の値を格納する「配列」などとなると、もう、お手上げ~でした。
a(0)="あ"
a(1)="い"
というようなことで、カッコの中の数字(エクセルのセルA1、の1のようなことかと。「添え字」とも)を変化させることで、格納している情報を効率よく処理できる、という…。
この「配列」がさらに多次元でつかえるとか…少し使えるようになると嬉しかったです。
PHP:array_diff — 配列の差を計算する
で、時代は一気に30年以上経過し、現在へ。
PHPでDOMするにしても、今回、たとえば記事の個別URLを得たとして、これが既出かどうかというのは、結構大切な関門のような気がするです。
これ抜きにすると、目視で確認するということに…。自動の「自」は「自分」という意味ではなかったはずだが…。はて?
PHPのスクリプトに、これは前回チェックしているから、今回このURLは必要なし、という機能がないと困る、というようなことであります。
PHPの配列どうしを比較するという方法を使うと、これが結構簡単にできるみたいであります。配列内の並び順も気にせず、サッとできる…。昔なら、アルゴリズムをいちいちスクリプトに書いていたな~などと、隔世の感…(単に爺が知らないだけ…)。
配列1の内容が、a,b,c,3 の4つ、配列2の内容が、a,b,c,d,0,1 の6つとした場合、配列1をキーにすると、 3 が差分になる…。配列2をキーにすると、d,0,1 が差分に(厳密には、PHPは「===」で比較するみたいですが、まあ、例えというようなことで、曖昧な部分はお目こぼしを…)。
さて、妄想は続く…。