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

Kouzou Takahashi kenzo.taka @ gmail.com
2012年 5月 31日 (木) 00:14:34 JST


高橋といいます。

if (array_search($title, $files) == NULL)
ならば、テキストファイル作成して$filesを更新
if ( !(array_key_exists($title, $data)))
ならば$data[$title] = $urlをセット

という判定なら記載されている内容が満たせそうに思いますがいかがでしょう


2012年5月30日 21:57  <yk_mailing @ excite.co.jp>:
> 質問させてください。
>
> 自分はPHPにてcURLで、
>
> 1. topページ(http://www.eslpod.com/website/show_all.php)から数十のリンク先
> の記事のtitle(English Caf&#233; 348)と、各記事へ飛ぶurl(http://www.eslpod.com/website/show_podcast.php?issue_id=11951688)を取得
> 2. パソコン内に1.で取得したtitleと同じファイル(ファイル名はEnglish Caf&#233; 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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3


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