Regex не является правильным инструментом для этого .Вот как это сделать с DOM
$html = <<< HTML
<div class="parent">
<div>
<p>previous div<p>
</div>
blablabla
blablabla
blablabla
<div class="adsdiv">
<p>other content</p>
</div>
</div>
HTML;
Содержимое в документе HTML - это TextNodes.Теги - это ElementNodes.Ваш TextNode с содержимым blablabla должен иметь родительский узел.Для извлечения значения TextNode, мы будем предполагать, что вы хотите, чтобы все TextNode ParentNode атрибута div
с class
имели значение adsdiv
$dom = new DOMDocument;
$dom->loadHTML($html);
$xPath = new DOMXPath($dom);
$nodes = $xPath->query('//div[@class="adsdiv"]');
foreach($nodes as $node) {
foreach($node->parentNode->childNodes as $child) {
if($child instanceof DOMText) {
echo $child->nodeValue;
}
};
}
Да, это не какой-то фантик, ноэто также намного меньше головной боли и дает вам полный контроль над документом HTML.Используя возможности запроса XPath, мы могли бы сократить это до
$nodes = $xPath->query('//div[@class="adsdiv"]/../text()');
foreach($nodes as $node) {
echo $node->nodeValue;
}
Я оставил его намеренно многословным, чтобы проиллюстрировать, как использовать DOM.