Если список совпадений совпадает, вы можете просто скомбинировать его следующим образом:
preg_match_all("/\<div class=\"merchant_info\">\s*(\<div.*?\<\/div>\s*)?(.*?)\<\/div\>/is", $res[0], $matches );
preg_match_all("/\<a class=\"thumb\"(.*?)\<\/a\>/is", $res[0], $second);
foreach($matches[0] as $i => $titles)
{
echo "<div class='titles' >".$titles."</div>";
echo "<div class='thumbs' >".$second[$i]."</div>";
}
Обратите внимание, как вторая preg_match_all
использует переменную результата $second
. $i
является числовым индексом первого $matches
массива, но используется как есть для $ second.
Btw. Я за использование регулярных выражений. Но, учитывая сложность соответствия, это может быть одним из случаев, когда ваш код может выиграть от использования HTML-анализатора. phpQuery или QueryPath значительно упрощают извлечение содержимого и гарантируют, что заголовки действительно принадлежат миниатюрам.