W3 API ile RSS,CSS ve HTML dosyalarının hata sayılarını bulun
16 Kasım 2008 | Kategori : Kod Örnekleri | 1 Yorum »
W3 (Web’de ki standartları belirleyen organizasyon) sağladığı Validator servisleri ile HTML,RSS ve CSS dökümanlarının geçerli olup olmadığını test edip hata ve uyarı sayılarını bize veriyor. Sağladığı API ile de bu geçerlilik testlerini üçüncü parti servislerin yapabilmesine imkan tanıyor. Bizde bugün bu API servisini kullanarak herhangi bir RSS,HTML veya CSS dosyasının hata sayısını bulan kodu yazacağız.
Curl ile XML dosyasını alıp SimpleXML sınıfı ile bu XML’i döngüye çeviriyoruz.
include 'simplexml.class.php';
//dosyanın url'sini yazıyoruz
$fileurl='http://www.md-12.com';
//dosyanın türünü buraya yazıyoruz. Seçenekler:rss,html,css
$filetype='html';
//burada dosya tipine gore kullacagımız API'yi seçiyoruz
if ($filetype=="html") {
$checkurl='http://validator.w3.org/check?uri='.$fileurl.'&charset=%28detect+automatically%29&doctype=Inline&group=0&output=soap12';
}
elseif ($filetype=="rss") {
$checkurl='http://validator.w3.org/feed/check.cgi?url='.$fileurl.'&output=soap12';
}
elseif ($filetype=="css") {
$checkurl='http://jigsaw.w3.org/css-validator/validator?uri='.$fileurl.'&warning=1&profile=css21&usermedium=all&output=soap12';
}
//echo $checkurl;
//curl ile XML dosyasını alıyoruz.
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $checkurl);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$api_cikti = curl_exec($ch);
curl_close($ch);
//burada XML dosyasını döngüye çeviriyoruz
$sxml = new simplexml;
$sxml->ignore_level = 1;
$data = $sxml->xml_load_file($api_cikti,"array");
//çıkan döngüyü print_r ile inceleyebiliriz.
//print_r($data);
// sonuçları yazıyoruz
if ($filetype=="html") {
echo 'Hata sayısı : '.$data["m:markupvalidationresponse"]["m:errors"]["m:errorcount"];
echo 'Uyarı sayısı : '.$data["m:markupvalidationresponse"]["m:warnings"]["m:warningcount"];
}
elseif ($filetype=="rss") {
echo 'Hata sayısı : '.$data["m:feedvalidationresponse"]["m:errors"]["m:errorcount"];
echo 'Uyarı sayısı : '.$data["m:feedvalidationresponse"]["m:warnings"]["m:warningcount"];
}
elseif ($filetype=="css") {
echo 'Hata sayısı : '.$data["m:cssvalidationresponse"]["m:result"]["m:errors"]["m:errorcount"];
echo 'Uyarı sayısı : '.$data["m:cssvalidationresponse"]["m:result"]["m:warnings"]["m:warningcount"];
}