PHP DOMDocument Sınıfı Kullanımı
13-03-2014
(PHP 4 >= 4.1.0) ile gelen DOMDocument sınıfı ile bir html sayfasını parsing etmek için veya bir HTML string'ini parsing etmek için şu kodları kullanmak gereklidir:
//UTF-8 sayesinde karakter problemi ortadan kalkar.
$dom = new DOMDocument('1.0','UTF-8');
$encodingHint = '';
$dom->substituteEntities = TRUE;
//loadHTML metodu parametre olarak bir string veya html dosya adi alir. Buradaki $content bir HTML string'i
$dom->loadHTML($encodingHint.$content);
$domx = new DOMXPath($dom);
//Bu kodta ise benimCssSinifim isimli css sınıfına göre parsing yapılacağı belirtilmektedir.
$entries = $domx->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' benimCssSinifim ')]");
$satirlar=array();
foreach ($entries as $entry) {
$satirlar[] = '<' . $entry->tagName . '>' . $entry->nodeValue . '' . $entry->tagName . '>';
}
Eğer bir css sınıfına göre parsing değil de, bir elemente göre parsing yapmak istiyorsak DOMXPath sınıfının evaluate() metodu içerisinde HTML elementini yazmamız gerekecektir. $parsingEdilecekHTMLKodu="Bu kod çalıştığı zaman ekrana şu şekilde bir array yazılır:Phasellus blandit enim eget odio euismod eu dictum quam scelerisque.
". "Sed ut diam nisi.
Ut vestibulum volutpat luctus.
"; $dom = new DOMDocument(); $dom->loadHTML($parsingEdilecekHTMLKodu); $domx = new DOMXPath($dom); $entries = $domx->evaluate("//p"); $arr = array(); foreach ($entries as $entry) { $arr[] = '<' . $entry->tagName . '>' . $entry->nodeValue . '' . $entry->tagName . '>'; } print_r($arr);
Array(
[0] = 'Phasellus blandit enim eget odio euismod eu dictum quam scelerisque.
';
[1] = 'Sed ut diam nisi. Ut vestibulum volutpat luctus.
';
[2] = 'Ut vestibulum volutpat luctus.
';
)