<div class="begin">...</div>
Nasıl iç (dahil) html maç için <div class="begin">
PHP?
Ben bir regex çözüm gerekir that can handle nested case.
Yerine regex ve DOM ve DOMXPath kullanın, bunun için bana teşekkür edeceksiniz:
// something useful:
function dumpDomNode ($node) {
$temp = new DOMDocument();
$temp->appendChild($node,true);
return $temp->saveHTML();
}
$dom = new DOMDocument();
$dom->loadHTML($html_string);
$xpath-> new DOMXpath($dom);
$elements = $xpath->query("*/div/[@class='begin']");
foreach ($elements as $el) {
echo dumpDomNode($el); // <-- or do something more useful with it
}
Regex ile çalışıyor delilik yol aşağı götürecek ...
HTML ayrıştırmak için normal ifadeler kullanmayın lütfen. http://www.codinghorror.com/blog/archives/001311.html, özellikle http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 bakınız.
İşte Regex olduğunu:
preg_match('/<div class=\"begin\">.*<\/div>/simU', $string, $matches);
But:
This oldukça iyi özetliyor.
Kısacası, HTML ayrıştırmak için normal ifadeler kullanmayın. Bunun yerine, DOM sınıfları bakmak ve özellikle DOMDocument::loadHTML
Burada dize yöntemleri kullanarak bir yolu
$str= <<<A
blah
<div class="begin">
blah blah
blah
blah blah </div>
blah
A;
$s = explode("</div>",$str);
foreach($s as $k=>$v){
$m=strpos($v,'<div class="begin">');
if($m !==FALSE){
echo substr("$v" ,$m);
}
}
çıktı
$ php test.php
<div class="begin">
blah blah
blah
blah blah