Я пытаюсь разобрать блок с html-страницы, поэтому я пытаюсь выполнить preg_match этот блок с помощью php 
 if( preg_match('<\/div>(.*?)<div class="adsdiv">', $data, $t)) 
но не работает
 </div> blablabla blablabla blablabla <div class="adsdiv"> 
  я хочу grep только blablabla blablabla слова любая помощь 
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.
  Помимо сказанного выше, также добавьте модификатор /s .  будет соответствовать новым символам.  (отредактируйте: как любезно указал Алан, [^<]+ будет соответствовать новым символам) 
  Я всегда использую /U так как в этих случаях вы обычно хотите минимальное сопоставление по умолчанию.  (также будет быстрее).  И /i поскольку люди говорят <div> , <DIV> или даже <Div> … 
 if (preg_match('/<\/div>([^<]+)<div class="adsdiv">/Usi', $data, $match)) { echo "Found: ".$match[1]."<br>"; } else { echo "Not found<br>"; } 
редактирование сделало его немного более явным!
Из руководства PHP :
s (PCRE_DOTALL). Если этот модификатор установлен, метасимвол точки в шаблоне соответствует всем символам, включая символы новой строки. Без него новые строки исключаются. Этот модификатор эквивалентен модификатору Perl / s. Отрицательный класс, такой как [^ a], всегда соответствует символу новой строки, независимо от настройки этого модификатора.
Итак, должно работать следующее:
 if (preg_match('~<\/div>(.*?)<div class="adsdiv">~s', $data, $t)) 
  ~ Там, чтобы разграничить регулярное выражение. 
  Вам нужно разграничить регулярное выражение;  используйте /<\/div>(.*?)<div class="adsdiv">/ вместо этого.