function guvenliHtml ($metin) { global $baslangic; $konumK = 0; # < (Kucuktur) karakterinin goruldugu son konum $konumB = 0; # > (Buyuktur) karakterinin goruldugu son konum $tag_mi = False; # tag icerisinde miyiz? $ozellikSablon = ''; # ozellik=deger formatindaki aramalar icin kullanilacak global $tagTablosu = array(); # tag bilgilerinin yer alacagi global $ozellikTablosu = array(); # ozellik (attribute) bilgilerinin yer alacagi global $degerTablosu = array(); # deger (value) bilgilerinin yer alacagi global # global degiskenlerin degerlerini set et guvenliGlobal(); # metni islemeden once yapilan on duzeltme islemi $metin = onDuzeltme($metin); $i = 0; $buffer = ''; $konumK = strpos($metin, '<', $i); # < karakterinin rastlandigi ilk konum $konumB = strpos($metin, '>', $i); # > karakterinin rastlandigi ilk konum # metin icindeki tag'lari tara while (True) { # eger < karakterine daha once rastlandiysa # veya < karakteri bulundu ama > karakteri bulunamadiysa if (($konumK !== False && $konumK < $konumB) || ($konumK !== False && $konumB === False)) { #tag icerisindeysek if ($tag_mi) { # tag icinde < olamayacagi icin tag sandigimiz kismin # basindaki < karakterini < ifadesine cevir $buffer .= '<' . substr($metin, $i, $konumK - $i); # tag icerisinde degilsek } else { # $buffer .= substr($metin, $i, $konumK - $i); } $i = $konumK + 1; $konumK = strpos($metin, '<', $i); # tag baslat $tag_mi = True; # eger > karakterine daha once rastlandiysa # veya > karakteri bulundu ama < karakteri bulunamadiysa } elseif (($konumB !== false && $konumK > $konumB) || ($konumK === False && $konumB !== False)) { # tag icerisindeysek if ($tag_mi) { # duzeltilmis tag'i ekle $buffer .= guvenliTag(substr($metin, $i, $konumB - $i)); # tag'i kapat $tag_mi = False; # tag icerisinde degilsek } else { # buraya kodar olan kismi al # ve > karakterini > ifadesine cevir $buffer .= substr($metin, $i, $konumB - $i) . '>'; } $i = $konumB +1; $konumB = strpos($metin, '>', $i); # eger < veya > karakterine rastlanmadiysa } else { # tag icerisindeysek if ($tag_mi) { # son rastlanan < karakterini < ifadesine cevir # ve metnin devamini buffer'a ekle $buffer .= '<' . substr($metin, $i); } else { # son kalinan konumdan itibaren metnin devamini buffer'a ekle $buffer .= substr($metin, $i); } # artik tag kalmadigina gore donguden cik break; } } return $buffer; } # -------------------------------------------------------------------------------------------------- function onDuzeltme($metin) { $degisiklikOncesi = ''; # degistirilmesi gereken bolum oldugu surece devam et while ($degisiklikOncesi != $metin) { $degisiklikOncesi = $metin; # x formatinda yazilmis bazi karakterler, ASCII karsiliklarina cevriliyor # bazi tag'lar ve icerikleri atiliyor $metin = preg_replace('//si', '', $metin); $metin = preg_replace('/
\s]+.*?<\/head>/si', '', $metin); $metin = preg_replace('/