0

別のページから URL とタイトルを取得するために preg_match_all を使用しています。取得は問題ありませんが、foreach を使用して取得できません。または foreach の代わりに別の方法がありますか?

//gets URLs of href='xxxx'   
 preg_match_all('/a href="([^"]+)" class=l.+?>.+?<\/a>/',$sear,$results);

//gets titles of >xxxx</a>   
    preg_match_all('/a href=".+?" class=l.+?>([^"]+)<\/a>/',$sear,$t);

以下のコードは、取得した URL を表示します

foreach ($results[1] as $url)
{
echo "<a href='$url'>$u</a> <br>";

$i++;
}

以下のコードは、取得したタイトルを表示します

   foreach ($t[1] as $title)
   { 
   echo $title; 
   $i++;
   }

しかし、それら(URLとタイトル)を1つのforeachに表示する方法がわからないので、次のようにすることができます

<a href='URL'>Title</a> 
4

1 に答える 1

1

2 つの正規表現を組み合わせて、両方のアイテムを 1 つのショットでキャプチャします。

preg_match_all('/<a href="([^"]+)" class=l.+?>([^<]+)<\/a>/',$sear, $results);
var_dump( $results);

これで、キャプチャ グループ 1 と 2 の URL とタイトルの両方が得られました。

この正規表現の改善は、正の先読みを使用して終了に一致させること</a>ですが、簡単にするために、現在のソリューションで問題ありません。

編集:結果から正しい出力を取得する方法を理解するために、最初はOPに任せました。ただし、これは実用的な例です。

for( $i = 0; $i < count( $results[1]); $i++)
    echo 'URL: ' . $results[1][$i] . ', Title: ' . $results[2][$i];
于 2012-05-04T19:06:17.700 に答える