プログラム+PHP超初心者で只今勉強中です。

外部にあるdata.csv内容は以下

001
002
003

このデータを展開して
file_get_contents
でデータを取得しようと思います。
無論csvは3行だけでなく10行近くになることもあります。

取得したいデータは

$str01 = file_get_contents('http://www.hogehoge.com/001/xx.html');
$str02 以下同じくで001が002→003となって行きます

となり各ディレクトリ xx.html を取ってくる形です。
各データの中身は

<html><title>タイトル</title><body>中身</body></html>

タイトルをつまみます

最終的に
タイトル(/001/のもの)
タイトル(/002/のもの)
タイトル(/003/のもの)
となるのが理想です。

ダメソースは以下

mb_regex_encoding('EUC-JP');

if( $handle = fopen( 'data.csv', 'r' ) ){
while( ( $lines = fgetcsv( $handle ) ) !== FALSE ){
for( $i = 0; $i < count( $lines ); $i ++ ){
$str[$i] = file_get_contents('http://www.hogehoge.com/'.$lines[$i]./xx.html'');
preg_match('!<title>*(.*)</title>*!s', $str[$i], $title01[$i])){;
print $title01[$i];
}
}
}

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/04/15 13:12:10
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97

ポイント35pt

質問のスクリプトに手を加えてみました。

下記のようにしてください。

なお、各データの中において、最初に <title> タグが現れる場所を取得すると想定しています。

mb_regex_encoding('EUC-JP');
if ($handle = fopen('data.csv', 'r')) {
    while (!FEOF($HANDLE)) {
        $lines = fgets($handle, 128);
        $url = 'http://www.hogehoge.com/'. $lines . '/xx.html';
        $str = file_get_contents($url);
        if (preg_match("/<title>([\<]+)<\/title>/ms", $str, $arr) > 0) {
            print $arr[1] . "<br />\n";
        }
    }
}
id:admn

mb_regex_encoding('EUC-JP');

if ($handle = fopen('data.csv', 'r')) {

while (!feof($handle)) {

$lines = fgets($handle, 128);

$url = 'http://www.hogehoge.com/'.$lines.'/xx.html';

$str = file_get_contents($url);

if (preg_match("/<title>2011/04/15 12:19:04

その他の回答1件)

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97ここでベストアンサー

ポイント35pt

質問のスクリプトに手を加えてみました。

下記のようにしてください。

なお、各データの中において、最初に <title> タグが現れる場所を取得すると想定しています。

mb_regex_encoding('EUC-JP');
if ($handle = fopen('data.csv', 'r')) {
    while (!FEOF($HANDLE)) {
        $lines = fgets($handle, 128);
        $url = 'http://www.hogehoge.com/'. $lines . '/xx.html';
        $str = file_get_contents($url);
        if (preg_match("/<title>([\<]+)<\/title>/ms", $str, $arr) > 0) {
            print $arr[1] . "<br />\n";
        }
    }
}
id:admn

mb_regex_encoding('EUC-JP');

if ($handle = fopen('data.csv', 'r')) {

while (!feof($handle)) {

$lines = fgets($handle, 128);

$url = 'http://www.hogehoge.com/'.$lines.'/xx.html';

$str = file_get_contents($url);

if (preg_match("/<title>2011/04/15 12:19:04

id:asuka645 No.2

回答回数856ベストアンサー獲得回数97

ポイント35pt

『/xx.html』の前に半角スペースが入ってうまく引っ張ってこれないようです。解決法があればお願い致します。

以下のように修正してください。


$lines = fgets($handle, 128);

 ↓

$lines = trim(fgets($handle, 128));

id:admn

ありがとうございます。

これでやってみます。

2011/04/15 13:11:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません