Etiket Bulutu Sınıfı

PHP
63 lines
<?php
class Bulut{
function Bulut($dosya = 'bulut.dat'){
if(!file_exists($dosya)){
$f = fopen($dosya,"w");
fyaz($f,serialize(array()));
fclose($f);
}
}
static function hazirla($giris){
$giris = preg_replace("/\d+/","",$giris);
$giris = preg_replace("/\W+/","-",$giris);
$giris = preg_replace("/(^\W)|(\W$)/","",$giris);
$giris = preg_replace("/[\-]+/","-",$giris);
return ($giris);
}
static function yaz($bulut,$dosya = 'bulut.dat'){
$f = fopen($dosya,"w");
fwrite($f,serialize($bulut));
fclose($f);
}
static function oku($dosya = 'bulut.dat'){
if(!file_exists($dosya))
$bulut = new Bulut;
$dosya = file($dosya);
$bulut = unserialize($dosya[0]);
return $bulut;
}
static function guncelle($kelime){
$bulut = Bulut::oku();
$kelime = Bulut::hazirla($kelime);
if(array_key_exists($kelime,$bulut))
$bulut[$kelime]++;
else
$bulut[$kelime] = 1;
Bulut::yaz($bulut);
}
static function isle($format,$min = 9,$maks = 28){
$bulut = Bulut::oku();
if(sizeOf($bulut) == 0){
$sonuc = 'Veri Yok';
$bulut = new Bulut;
} else {
$min_say = min(array_values($bulut));
$maks_say = max(array_values($bulut));
$spoku = $maks_say - $min_say;
$sonuc = '';
foreach($bulut AS $bulut=>$cnt){
$boyut = $min + ($cnt - $min_say) * ($maks - $min) / $spoku;
$etiket = @str_replace('###KELIME###', $bulut, $format);
$etiket = @str_replace('###BOYUT###', floor($boyut), $etiket);
$sonuc .= $etiket;
}
}
return $sonuc;
}
}
Bulut::guncelle("php");
Bulut::guncelle("javascript");
Bulut::guncelle("html");
Bulut::guncelle("css");
echo Bulut::isle('<a href="?###KELIME###" style="font-size:###BOYUT###px">###KELIME###</a> ');
?>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Çıktısı

HTML
4 lines
<a href="?php" style="font-size:28px">php</a>
<a href="?javascript" style="font-size:14px">javascript</a>
<a href="?html" style="font-size:9px">html</a>
<a href="?css" style="font-size:9px">css</a>
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

Sizin Değerli Görüşlerinize İhtiyacımız Var.