[PHP-users 35716] 情報取得の際にtitleとurlを連携させ、既得のtitleの場合は処理しないという事をしたいのですが

yk_mailing @ excite.co.jp yk_mailing @ excite.co.jp
2012年 5月 30日 (水) 21:57:45 JST


質問させてください。

自分はPHPにてcURLで、

1. topページ(http://www.eslpod.com/website/show_all.php)から数十のリンク先
の記事のtitle(English Café 348)と、各記事へ飛ぶurl(http://www.eslpod.com/website/show_podcast.php?issue_id=11951688)を取得
2. パソコン内に1.で取得したtitleと同じファイル(ファイル名はEnglish Café 348.txtのようにします)があるかを確認
3. 同名のものがあればそのurlに対する処理はせず、無ければそのurlを配列に格納し、一気にforeach()などで、その先の英文を取得しテキストファイルに書き込んで保存という処理を実行

というプロセスを行いたいと考えているのですが、スクリプト記述のアイデアが浮かびません。


cURLから得たtitle情報を$titlesに、リンク先のurl情報を$urlsに入れるとします。
で、opendir()関数で指定ディレクトリ内にあるファイル名を確認する際のやり方を以下のように考えました。
$filesという配列内に.txt拡張子を省いたファイル名を格納、それをarray_diff($titles, $files)にて比較。

しかし、これだけではその後に必要とされる$urlsと関連性がありません。
なので$dataという配列内に連想配列として$data[$title] = $urlというtitle、urlを個別対応の形にして、
array_diff($data[$title], $files)としようかと考えました。

しかし、この形ではcURLの後に
$doc = new DOMDocument();
@$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
//body部から該当するtitleを取得
$extracts = $xpath->query($titles_xPath);
foreach ($extracts as $value)
{
$result = trim($value->nodeValue);
$results[] = $result;
}
のようなスクリプトを実行する自分のやり方ではtitleとurlを対応させられません。

ちょっと分かりにくい文章になってしまって申し訳ございませんが、どのようにすればtitleとurlを対応させながら、上記のような1〜3の処理を完了させればいいのかアドバイスを頂けないでしょうか?


PHP-users メーリングリストの案内