XLT blogas

2008-11-15

Raktažodžio paryškinimas paieškos rezultatuose (PHP)

Įrašyta kategorijoje: php — dainos @ 14:10
Tags: , , ,

Skriptas, kaip rasti ir paryškinti raktažodį paieškos rezultatuose (PHP). Pirmiausia tekste randamas tas raktažodis, atkerpamas tam tikras gabalas prieš jį ir už jo, ir galiausiai paryškinama. Pagrindinės naudojamos funkcijos – substr ir strpos.

$ilgis=strlen($raktazodis);

if(strpos($tekstas,$raktazodis)!==false){
$nuopradzios=strpos($tekstas,$raktazodis)+$ilgis;
$spr=explode($raktazodis,$tekstas);
if(strlen($spr[0])>180){
$prad=substr($spr[0], -180);
}
else { $prad=substr($tekstas, 0, strpos($tekstas,$raktazodis)); }
$liekana=substr($tekstas, $nuopradzios);
if(strlen($liekana)>180){
$galas=substr($liekana, 0, 180);
}
else { $galas=$liekana; }
$tekstas=$prad.$raktazodis.$galas;
}

$tekstas=ucfirst($tekstas);
$pos = strrpos(substr($tekstas, 0 , 250) ,’ ‘ ) ;
$tekstas=substr($tekstas, 0 , $pos).”…”;
$pos = strpos($tekstas,’ ‘) ;
$tekstas=substr($tekstas, $pos);
$tekstas=str_replace($raktazodis,”<b>”.$raktazodis.”</b>”,$tekstas);

2008-10-23

PHP cache – serverio apkrovos (CPU) mažinimas

Įrašyta kategorijoje: php — dainos @ 10:55
Tags: , , , , ,

Jei svetainė tampa labiau lankoma, o naudojama TVS nėra gerai optimizuota, ji vis labiau apkrauna serverio procesorių (CPU). Elementarus būdas dramatiškai sumažinti apkrovą – kiek įmanoma daugiau viską kešuoti (įrašyti į laikiną tekstinį failą – cache), ypač daug Mysql užklausų generuojančias TVS vietas (pvz., kiekviename puslapyje įterpiamus topus, naujausių straipsnių/nuorodų sąrašus ir pan.).
Kešavimo esmė – nustatytą laiką naudoti išsaugotą puslapio ar jo dalies kopiją. Praėjus tam laikui, kopija atnaujinama.
Kešavimui naudojamos PHP funkcijos ob_start, ob_get_contents, ob_end_flush.

Pavyzdys:
$cache_failas = “cache/failas.txt”;
$cache_laikas = 3600;
if (file_exists($cache_failas) && (time() – $cache_laikas
< filemtime($cache_failas)))
{
include($cache_failas);
}
else {
ob_start();

//php kodas, pvz paėmimas is duomenų bazes

//irasom i cache
$f = fopen($cache_failas, ‘wb’);
fwrite($f, ob_get_contents());
fclose($f);
ob_end_flush();
}

$cache_failas – failas, į kurį bus įrašoma. Jį galima sukurti iš anksto (ir atitinkamai
suchmod’inti) arba, jei nebus, jis gali būti sukurtas automatiškai (žr. apie fopen)
$cache_laikas – sekundėmis. Kas kiek laiko turi būti atnaujinama. Šiuo atveju: 3600 sek = 1 valanda

2008-09-20

Mysql UTF-8 lietuvybė

Įrašyta kategorijoje: php — dainos @ 19:18
Tags: , , ,

Papildomai prie šio būdo – dar kelios manipuliacijos mėginant priversti rodyti lietuviškas raides iš Mysql bazės.

mysql_set_charset, parašius po prisijungimo prie bazės, padeda teisingai atvaizduoti lietuviškas raides iš bazės su utf8 koduote. (Plačiau čia)

Alternatyva: mysql užklausa SET NAMES:

mysql_query(‘SET NAMES utf8);

Bazės konvertavimas į UTF:

ALTER TABLE lentele CONVERT TO CHARACTER SET utf8

Jei nepavyksta – alternatyva:

Pirmiausia norimą teksto stulpelį paverčiame į BLOB, o tada grąžiname į TEXT su UTF koduote:

ALTER TABLE lentele MODIFY `stulpelis` BLOB
ALTER TABLE lentele MODIFY `stulpelis` TEXT CHARACTER SET utf8

2008-07-29

Strtolower su UTF-8: pavertimas mažosiomis raidėmis

Įrašyta kategorijoje: Uncategorized — dainos @ 12:19
Tags: , , , , ,

UTF-8 koduote koduoti tekstai dažnai sukelia daug kvailų problemų, nes su jais neveikia kai kurios elementarios funkcijos. Pvz., paprasta pavertimo mažosiomis raidėmis PHP funkcija strtolower Unikodu koduotą tekstą paverčia nelemtais kvadratais. Tenka naudoti specialią funkciją, pvz.:

function konvert($text, $from, $to)
{
        return iconv($from, $to, $text);
}
function utf_strtolower($s)
{
    $t = “windows-1251″;
    $d = “UTF-8″;
    return konvert(strtolower(konvert($s, $d, $t)), $t, $d);
}

$tekstas=”РУССКИЙ текст”;

$keiciam=utf_strtolower($tekstas);

echo $keiciam;

Rezultatas: “русский текст”.

Blog at WordPress.com.