Я использую preg_match_all, чтобы захватить URL-адреса и заголовки с другой страницы, и хватать все в порядке, но я не могу их подключить к одному, используя 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 & title) в одном foreach, поэтому я могу сделать это как
<a href='URL'>Title</a>
Объедините два регулярных выражения для захвата обоих элементов в один снимок:
preg_match_all('/<a href="([^"]+)" class=l.+?>([^<]+)<\/a>/',$sear, $results); var_dump( $results);
Теперь у вас есть URL и заголовок при захвате групп 1 и 2.
Улучшением этого регулярного выражения будет использование положительного результата для соответствия закрытию </a>
, но для простоты ваше текущее решение должно быть прекрасным.
Edit: Я изначально оставил его до OP, чтобы выяснить, как получить правильный результат из результатов. Однако здесь приведен рабочий пример.
for( $i = 0; $i < count( $results[1]); $i++) echo 'URL: ' . $results[1][$i] . ', Title: ' . $results[2][$i];