$s = '<div id="content">
<div id="contentleft"> <SCRIPT language=JavaScript>';
if( preg_match('/id="content">(.*?)<SCRIPT/s', $s, $matches) )
print $matches[1]."\n";
Nokta, varsayılan olarak, satırsonlarının şeyi ama eşleşir. /s
herşeyi maç yapar.
Ama gerçekten, bir DOM ayrıştırıcı kullanın. Sen ağaç yürüyebilir veya bir XPath sorgusu kullanabilirsiniz. XML için regexes gibi düşünün.
$s = '<div id="content">
<div id="contentleft"> <SCRIPT language=JavaScript>';
// Load the HTML
$doc = new DOMDocument();
$doc->loadHTML($s);
// Use XPath to find the <div id="content"> tag's descendants.
$xpath = new DOMXPath($doc);
$entries = $xpath->query("//div[@id='content']/descendant::*");
foreach( $nodes as $node ) {
// Stop when we see <script ...>
if( $node->nodeName == "script" )
break;
// do what you want with the content
}
XPath son derece güçlüdür. Here's some examples.
PS I Yukarıdaki kod bazı kadar sıkılır olabilir (umarım) eminim.