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.
'; )