function sayfa_hesapla($metin, $sbk = 1000 /* sbk: Sayfa başına kelime sayısı */) {
   $kelimeler = explode(' ', $metin); // Kelimelere bölüyoruz
   $sayfa_sayisi = $kelimeler/$sbk + ($kelimeler % $sbk > 0 ? 1 : 0); // kelime sayısının, sayfa başına kelime sayısına bölümü ve eğer kelime sayısı sayfa başına kelime sayısına tam bölünmüyorsa +1 diyoruz
}

function sayfayi_bol($metin, $sayfa = 0, $sbk = 1000) {
   $kelimeler = explode(' ', $metin); // Kelimelere bölüyoruz

   $return = array();
   for ($i = $sayfa*$sbk; $i < ($sayfa+1)*$sbk; ++$i) {
      $return[] = $kelimeler[$i]; // İstenen aralıktaki kelimeleri bir diziye atıyoruz.
   }
   return implode(' ', $return); // Diziyi boşluklarla bir string haline getiriyoruz.
}

/*
Veritabanı işlemleri 
*/

$kac_sayfa = sayfa_hesapla($makale);

echo sayfayi_bol($makale, (empty($_GET['sayfa']) ? 0 : (int) $_GET['sayfa']));

for($i = 0; $i < $kac_sayfa; ++$i) {
   echo '
   <li>', ($i != $_GET['sayfa'] ? '<a href="?sayfa=' . $i+1 . '">' : ''), $i+1, ($i != $_GET['sayfa'] ? '</a>' : ''), '</li>';
}