@buddy; arkadaşımızın isteği üzerine bu konuyu açma gereksinimi duydum. Öncelikle "Simple HTML DOM Parser nedir?" sorusuna cevap vereyim. Simple HTML DOM Parser, HTML üzerinden CSS seçicini kullanarak veri alışverişi yapmamıza yarayan bir sınıftır. Gayet kolay bir kullanımı vardır.
Simple HTML DOM Parser'in kullanımı;
Composer aracılığıyla Simple HTML DOM Parser'i kurabiliriz veya bu adresten sınıfı indirebiliriz. Ben bu konuda sadece Composer ile nasıl kuracağımızı göstereceğim.
Bilgisayarınızda veya sunucunuzda Composer kurulu değilse şu yazımı okumanızı tavsiye ediyorum.
composer.json;
{
"minimum-stability": "dev",
"require": {
"sunra/php-simple-html-dom-parser": "~1"
}
}Bağımlılıkları yükledikten sonra deneme amaçlı bir dosya oluşturalım ve içerisine şu betiği ekleyelim.<?php
# Hata raporlamayı aktifleştirelim ve E_ALL seviyesine getirelim.
error_reporting(E_ALL);
# Dosya dahil etme yolunun ön tanımlı değerini değiştirelim.
set_include_path(str_replace("\\", "/", dirname(realpath(__FILE__))));
# Tarih/Zaman problemlerini engellemek için ön tanımlı zamandilimini değiştirelim.
date_default_timezone_set("Europe/Istanbul");
# Bağımlılıkları yükleyelim.
require("vendor/autoload.php");
# Kullanacağımız sınıfları çalışma alanımızda tanımlayalım.
use \Sunra\PhpSimple\HtmlDomParser;
# Çalışma sayfamızın tipini "text/html" karakter setini "UTF-8" yapalım.
header("Content-Type: text/html; charset=UTF-8");
# Bağlantı yapacağımız URL adresi
$url = "http://www.youtube.com/";
# Simple HTML DOM Parser'i başlatalım.
$dom = HtmlDomParser::file_get_html($url);
# HTML içerisinde artık CSS seçicilerini kullanabiliriz.
# "feed-list" sınıfına sahip <ul> listesinin ikinci elemanını seçelim.
$feed = $dom->find("ul.feed-list li", 1);
# Liste içerisindeki video adreslerini almak istiyoruz.
# Bunun için $feed değişkeninde tekrardan bir CSS seçici kullanmalıyız.
$items = $feed->find("a");
# Seçtiğimiz videoları ekrana yazalım.
echo "<ul>";
# Öğelerimizi döngüye sokalım.
foreach($items as $item)
{
# Başlık ve URL adresi varsa ekrana yazalım.
if(isset($item->title) && isset($item->href))
{
printf("<li><a href=\"%s\">%s</a></li>", $url.ltrim($item->href, "/"), html_entity_decode($item->title, ENT_QUOTES, "UTF-8"));
}
}
echo "</ul>";Tarayıcımızdan çalıştırdığımızda şuna benzer bir sonuç elde edeceğiz.
Sormak istediğiniz sorular, örnek taleplerinizi konu altına mesaj olarak yazıp beni etiketlerseniz sevinirim. Saygılarımla, Ogün Karakuş
benimde halletmem gereken işlerim var, boş vakit bulabilirsem hazırlayıp ekleyeceğim.