Etiket Bulutu Sınıfı

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

Çıktısı

<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>