есть html
…. bla bla bla….
<div class="description">
  <span style='float: right'></span>  
  <h2>Bakery</h2>			
  
    <p>3501 Broadway <br />New York, NY 10015 <a href="map/map-link-107172" id="map-link-107172">Map</a></p>
	
  <ul>
		<li class="number">(856) 629-6271</li>
  </ul>
  
  <ul> 
        <li><a href="http://bakery.com" class="main_web_site">Visit Web Site</a></li>
  </ul>
  
  <h4></h4>
</div>
bla.. 
      bla…Делаю так
$data = @file_get_contents('http://site.com') or die('Can\'t access source'); 
if(preg_match_all("#<h2>(.*?)</h2>#is", $data, $matches, PREG_SET_ORDER)) { 
	foreach($matches as $match) {
		print $match[0].'<br />';
	}
}
if(preg_match_all("#<li class=\"number\">(.*?)</li>#is", $data, $matches, PREG_SET_ORDER)) { 
	foreach($matches as $match) {
		print $match[0].'<br />';
	}
}
if(preg_match_all("#<p>(.*)</p>#iU", $data, $matches, PREG_SET_ORDER)) { 
	foreach($matches as $match) {
		print $match[0].'<br />';
	}
}проблема в том что например теги h2 или тег <p> пристутвует в других местах на странице и между ними содержится не не нужная иформация
как сделать чтобы искалось только все что содержится между <div class="description"> а потом уже внутри <div class="description"> искать то что будет между h2 и p
 
         
                                     
                                     
                                     
                                     
                                     
                                    