el11.net
Neler yeni

PHP Simple HTML DOM Parser Kütüphanesi!

B

blue

Aktif Üye
Üye
Puan 33
Çözümler 0
Simple HTML DOM Parser

Simple HTML DOM Parser, tüm işlemleri çok basitleştiren ve dış kaynaktan elde edilen HTML kodlarını, içerisinde barındırdığı metotlar ile ayrıştırma işlemlerini kolaylaştıran hafif ve kullanışlı olan bir sınıf/kütüphane ve yardımcı araçtır. Orijinal sitesine ve dokümantasyonuna Simple HTML DOM documentation adresinden ulaşabilirsiniz.
Kütüphane Kurulumu


Kütüphanein indirme adresine giderek, kütüphaneyi indiriyoruz. İndirdiğiniz sürüme bağlı olarak dosya sayısı ve isimleri değişebilir, hafif bir kütüphane olduğunu daha önceden belirtmiştim bu sebep ile bizim sadece ihtiyacımız olan dosya "simple_html_dom.php" dosyası olacaktır.



kwp0mik.png



XAMPP veya AppServ gibi kontrol panelleri ile web sunucunuzu başlattıktan sonra, "simple_html_dom.php" dosyanızı oluşturduğunuz proje dizinine atınız/kopyalayınız.

PHP dosyanıza require veya include fonksiyonları ile dahil edebilirsiniz.
Karşılaşabileceğiniz Hatalar

PHP:
<?php

include('simple_html_dom.php');
$html = file_get_html("https://www.google.com");

?>

file_get_html() metotu ile herhangi bir URL'den DOM oluşturmaya çalıştığımızda "Warning: file_get_contents(): stream does not support seeking in" şeklinde hata alıyor iseniz, kullandığınız PHP sürümünüze göre farklı hata çözümleri deneyebilirsiniz.

Php.ini dosyanızda:

;allow_url_fopen = On
;extension=php_openssl.dll

satırlarının başlarında ";" işaretleri varsa, bu işaretleri kaldırınız, bu işaretler yorum satırı görevi görüp gerekli işlevlerin çalışmasını engelliyor. Bu değişiklerden sonra sunucunuzu yeniden başlatmanız gerekiyor. Sunucunuzu yeninden başlatmazsanız, yaptığımız değişiklerin hiçbirisi uygulanmayacaktır ve hata almaya devam edeceksiniz.

Eğer başka hatalar ile karşılaştıysanız, php.net ve stackowerflow.com adreslerinden gerekli hataların çözümlerini kolaylıkla bulabilirsiniz.
Temel Kullanım Örnekleri

Temel kullanımda dilerseniz ayrıştırdığınız HTML kodlarını str_get_html() fonksiyonu ile ya da direkt olarak site kaynağını file_get_html() fonksiyonu ile elde ederek kullanabilirsiniz.

HTML kodlarını kendimiz belirteceğimiz zaman, str_get_html() fonksiyonu içerisine tırnak işaretleri eşliğinde yazarız.

PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<div class="bunjo">Ruby, PHP, C/C++</div>');

?>

HTML kodlarını bir URL'den çekmek isterseniz, file_get_html() fonksiyonunu kullanmalısınız.

PHP:
<?php

include('simple_html_dom.php');
$html = file_get_html("https://example.com/");

?>


HTML Elemanlarını Çekmek

Başlangıç olarak kendimizin tanımladığı HTML kodlarından, find() fonksiyonu ile veri çekmeye çalışalım.

PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1>');

$dom = $html->find('h1');
echo $dom[0];
?>
Çıktı:

Kod:
Ruby, PHP, C/C++
Bu örnekte "h1" etiketine sahip olan "Ruby, PHP, C/C++" verisini parse etmiş olduk.

Birden fazla "h1" etiketi varsa ve sınıf gözetilmeden bakılıyor ise;


PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');

$dom = $html->find('h1');
echo $dom[1];
?>
Bir önce yaptığımız örnekte $dom[] dizisindne 0. elemanı almıştık, birden fazla aynı etikete sahip veri olduğu zaman $dom[0], $dom[1]...$dom[n] şeklinde kolaylıkla veriyi çekebilirsiniz.

Veya

PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');

echo $html->find('h1', 1);
?>
Kod alternatiflerini deneyebilirsiniz.

Tüm elemanları yazdırmak isterseniz foreach() döngüsünü kullanabilirsiniz.

PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<h1 class="bunjo">Ruby, PHP, C/C++</h1><h1 class="bunjo">Python, GoLang, C#</h1>');

$dom = $html->find('h1');

foreach ($dom as $data) {
echo $data;
}
?>



Kod Çıktısı:

Kod:
Ruby, PHP, C/C++
Python, GoLang, C#



Class (Sınıf) ve ID Bulmak

HTML kodları içerisinde yer alan CSS seçicileri kullanarak ayrıştırma işlemlerimizi yapabiliriz.


PHP:
<?php

include('simple_html_dom.php');
$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');

?>

ID değerlerinden seçim yapmak için # (diyez) işaretini, sınıflardan seçim yapmak için ise "." işaretini kullanırız.

PHP:
<?php

include('simple_html_dom.php');

$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('#konu');

echo $dom[0];
?>
Kod Çıktısı:


Kod:
PHP HTML DOM Parser Kütüphanesi!

Bunjo





PHP:
<?php

include('simple_html_dom.php');

$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('.baslik');

echo $dom[0];
?>
Kod Çıktısı:

Kod:
PHP HTML DOM Parser Kütüphanesi!
PHP:
<?php

include('simple_html_dom.php');

$html = str_get_html('<div id="konu"><p class="baslik">PHP HTML DOM Parser Kütüphanesi!</p><p class="yazar">Bunjo</p></div>');
$dom = $html->find('.yazar');

echo $dom[0];
?>
Kod Çıktısı:

Kod:
Bunjo



Çoklu Seçim

Sınıflar birden fazla HTML elemanlarına verilebilir. Bu durumda sınıf-eleman ayrıştırması yapıp istediğimiz veriyi ayırabiliriz.


PHP:
<?php

include('simple_html_dom.php');

$html = str_get_html('<div><p class="abc123">Python</p><b class="abc123">Ruby</b><span class="abc123">PHP</span></div>');
$dom = $html->find('b.abc123');

echo $dom[0];

?>

Çıktı:

Kod:
Ruby
PHP:
<?php

include('simple_html_dom.php');

$html = str_get_html('<div><p class="abc123">Python</p><b class="abc123">Ruby</b><span class="abc123">PHP</span></div>');
$dom = $html->find('span.abc123');

echo $dom[0];
?>

Çıktı:
Kod:
PHP





PHP:
<?php

include('simple_html_dom.php');

?>

Kurulumlar buraya kadardı.
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz

Geri
Reklam
GlomaxGPT ile tanışın. Şimdi tamamen ücretsiz, el11.net üyelerine özel.
Reklam
Reklam
Reklam
Reklam