Pentiums Posted January 17, 2010 Report Share Posted January 17, 2010 (edited) Izdomāju, ka varētu uztaisīt šo topiku, kur tie, kam nav žēl, dalītos ar pašrakstītām PHP funkcijām. Ja nu kādam noder! :) Metam iekšā !!! --- Index --- Laika pārveide Pārvērš naudu vārdos Samazina att., lai iekļautos norādītajos izmēros Iegūstam faila paplašinājumu + pārbaudam, vai fails ir attēls Updeitojam Twitter statusu Pārvēršam baitus normālos lielumos + izveidojam SEO stringu SEO stringi atkal... un atkal Neko nedaram :) Saskaita un atgriež ierakstu skaitu no MySQL tabulas Automatizēta dropdownu ģenerēšana Funkcija, kas atgriež mēneša nosaukumu latviski no skaitļa (1-12) Saīsināts $_GET & $_POST Parāda cik lietotāji online (PHP&MySQL) Nogodējam / atkodējam tekstu Linux shell skripts, kas parāda draugiem.lv online lietotāju skaitu Pārvēršam <br /> atpakaļ uz newlines (br2nl) Encrypt / Decrypt Iegūstam draugiem.lv online skaitu (Linux shell) Teksta apstrāde / apciršana Tikko atbrīvojušies *.lv domēni Ražijam dažāda izmēra stringus :> Atgriež drošu faila vārdu, paredzēts lietošanai kopā ar funkciju move_uploaded_file() Paroles ģenerators ar iespēju mainīt tās stiprumu Konvertē objekta propertijus, masīvus un parastu variabli no utf8 uz win-1257 un otrādi Edited December 16, 2010 by Pentiums Quote Link to comment Share on other sites More sharing options...
Pentiums Posted January 17, 2010 Author Report Share Posted January 17, 2010 Laika pārveide. šodien / vakar /aizvakar un laiku (ja senāk, tad īso LV datumu un ja vēl senāk par šo gadu, tad arī gadu) function laikaParveide($s) { //Padodam UNIX timestampu if(strtotime('today') < $s) { if(date('H', $s) >= 12 && date('H', $s) <= 17) { return 'Šodien '.date('H:i', $s); } elseif(date('H', $s) >= 18 && date('H', $s) <= 23) { return 'Šovakar '.date('H:i', $s); } elseif(date('H', $s) >= 00 && date('H', $s) <= 04) { return 'Šonakt '.date('H:i', $s); } elseif(date('H', $s) >= 05 && date('H', $s) <= 11) { return 'Šorīt '.date('H:i', $s); } } elseif((strtotime('today') - 86400) < $s) { return 'Vakardien '.date('H:i', $s); } elseif((strtotime('today') - 172800) < $s) { return 'Aizvakar '.date('H:i', $s); } else { $menesis=array('01'=>'jan', '02'=>'feb', '03'=>'mar', '04'=>'apr', '05'=>'mai', '06'=>'jūn', '07'=>'jūl', '08'=>'aug', '09'=>'sep', '10'=>'okt', '11'=>'nov', '12'=>'dec'); return date('j', $s).'. '.$menesis[date('m', $s)].(date('Y') > date('Y', $s) ? ' '.date('Y', $s) : '').' '.date('H:i', $s); } } Quote Link to comment Share on other sites More sharing options...
briedis Posted January 17, 2010 Report Share Posted January 17, 2010 (edited) Pārvērš naudu vārdos $money - float skaitlis $currency - "LVL" vai "EUR" $lang - "ru" vai "lv" $separator - (kas atdala latus no santīmiem) Ierobežojumi Pārvērš robežās no 1.00 līdz 99.99 function getMoneyInWords($money,$currency="LVL",$lang="lv",$separator=","){ $tens['lv'] = array("Desmit","Divdesmit","Trīsdesmit","Četrdesmit","Piecdesmit","Sešdesmit","Septiņdesmit","Astoņdesmit", "Deviņdesmit"); $teens['lv'] = array("Vienpadsmit","Divpadsmit","Trīspadsmit","Četrpadsmit","Piecpadsmit","Sešpadsmit","Septiņpadsmit","Astoņpadsmit", "Deviņpadsmit"); $ones['lv'] = array("Viens","Divi","Trīs","Četri","Pieci","Seši","Septiņi","Astoņi", "Deviņi"); $tens['ru'] = array("Десять","Двадцать","Тридцать","Сорок","Пятьдесят","Шестьдесят","Семьдесят","Восемьдесят","Девяносто"); $teens['ru'] = array("Одиннадцать","Двенадцать","Тринадцать","Четырнадцать","Пятнадцать","Шестнадцать","Семнадцать","Восемнадцать", "Девятнадцать"); $ones['ru'] = array("Один","Два","Три","Четыри","Пять","Шесть","Семь","Восемь", "Девять"); $money_type['lv']['LVL']['santimi'] = "santīmi"; $money_type['lv']['LVL']['lati'] = "lati"; $money_type['lv']['LVL']['lats'] = "lats"; $money_type['lv']['EUR']['centi'] = "centi"; $money_type['lv']['EUR']['eiro'] = "eiro"; $money_type['ru']['LVL']['santimi'] = "сантимов"; $money_type['ru']['LVL']['lati'] = "латов"; $money_type['ru']['LVL']['lats'] = "лат"; $money_type['ru']['EUR']['centi'] = "цента"; $money_type['ru']['EUR']['eiro'] = "Евро"; $ready = ""; //Gatavā virkne $one = false; //ja true: lats; false: lati list($large,$small) = explode($separator,$money); $large = (int)$large; //Veselās naudas, piem. eiro, lati if($large > 9){ if($large > 10 && $large < 20){ $ready = $teens[$lang][$large-11]; }else{ $first = substr($large,0,1); $second = substr($large,1,1); $ready = $tens[$lang][$first-1]; if($second){ $ready .= " " . mb_strtolower($ones[$lang][$second-1],"UTF-8"); if($second == 1){ $one = true; } } } }else{ $ready = $ones[$lang][$large-1]; if($large == 1){ $one = true; } } if($currency == "EUR"){ $ready .= " {$money_type[$lang][$currency]['eiro']}, $small {$money_type[$lang][$currency]['centi']}"; }else{ $ready .= " " . ($one ? $money_type[$lang][$currency]['lats'] : $money_type[$lang][$currency]['lati']) . ", $small {$money_type[$lang][$currency]['santimi']}"; } return $ready; } Edited January 17, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
briedis Posted January 18, 2010 Report Share Posted January 18, 2010 (edited) Samazina attēlu, lai iekļautos norādītajos izmēros. Pārraksta samazināto pa virsu orģinālajam. function imageResize($path,$max_width=300,$max_height=400){ if(!file_exists($path)){ return false; } $max_height = (int)$max_height; $max_width = (int)$max_width; $src_img = imagecreatefromjpeg($path); $x = imagesx($src_img); $y = imagesy($src_img); if(($x >= $y) && ($x > $max_width)){ $picsize = $max_width; $new_w = imagesx($src_img); $new_h = imagesy($src_img); $aspect_ratio = $new_h / $new_w; $new_w = $picsize; $new_h = abs($new_w * $aspect_ratio); } if(($y > $x) && ($y > $max_height)){ $picsize = $max_height; $new_w = imagesx($src_img); $new_h = imagesy($src_img); $aspect_ratio = $new_w / $new_h; $new_h = $picsize; $new_w = abs($new_h * $aspect_ratio); } $dst_img = imagecreatetruecolor($new_w,$new_h); imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img)); return imagejpeg($dst_img, $path, 80); } Edited January 18, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
Pentiums Posted January 18, 2010 Author Report Share Posted January 18, 2010 Nezinu cik šis ir pilnīgs, bet.. Pārbauda vai strings nav tukšs un nesatur tikai atstarpes function navTukss($s) { if(!empty($s)) { $s = trim($s); if(!empty($s)) { return true; } else { return false; } } else { return false; } } Quote Link to comment Share on other sites More sharing options...
briedis Posted January 18, 2010 Report Share Posted January 18, 2010 1. funkcija - iegūst faila paplašinājumu 2. funkcija - pārbauda, vai fails ir attēls (tikai pēc paplašinājuma, kā jau mēs zinām, mime tips arī nav 100% drošs avots :)) //Iegūstam faila paplašinājumu function getFileExtension($file_name){ $info = pathinfo($file_name); return $info['extension']; } //Pārbaudam, vai fails ir attēls function isImage($file_name){ switch(getFileExtension($file_name)){ case "jpg" : return true; case "jpeg" : return true; case "gif" : return true; case "png" : return true; case "bmp" : return true; } return false; } Quote Link to comment Share on other sites More sharing options...
briedis Posted January 18, 2010 Report Share Posted January 18, 2010 (edited) Tā kā twittera API ir dažādi ierobežojumi uz pieprasījumu skaitu, vērtīgāk ir JSON datus iekešot lokāli (uzlabosies arī pieprasījuma ātrums), un atjaunot tikai reizi 5 minūtēs (vai līdz pirmajam apmeklētājam). <? function updateTwitter(){ $path = "js/twitter.json"; //Vieta, kur glabājas JSON dati $username = "username"; //Lietotājvārds $entry_count = 6; //Atgriežamo ierakstu skaits $update_interval = 300; // 5 minūtes $url = "http://twitter.com/statuses/user_timeline/$username.json?callback=twitterCallback2&count=$entry_count"; $stat = stat($path); $last_mod = (int)$stat[9]; $delta_mins = time() - $last_mod; if($delta_mins > $update_interval){ if($json_data = @file_get_contents($url)){ //Suppress warnings, ja neizdodas dabūt datus file_put_contents($path,$json_data); }else{ touch($path);//Pabakstam failu, lai nav jāmēģina atkal, ja neizdevās dabūt datus } } } ?> Edited January 18, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
2easy Posted January 18, 2010 Report Share Posted January 18, 2010 Nezinu cik šis ir pilnīgs, bet.. Pārbauda vai strings nav tukšs un nesatur tikai atstarpes tā funkcija tiešām ir pilnīga tādā šī vārda nozīmē kā "resna/korpulenta/uzblīdusi" jeb angliski bloated :P omg, kā tā var rakstīt! if(!empty($s)) { return true; } else { return false; } ja jau empty() izdod bool, tad to var uzreiz lietot return !empty($s); ja vajag pārbaudīt tikai stringu function hasStr($s) {return trim($s) != '';} 14x rindiņas vs 1x rindiņa ;) feel the difference? bet ja vajag vispārīgāku pārbaudi uz dažādiem datu tipiem, tad arī to var izdarīt ar 1x statement function hasVal($v) {return (bool) (is_string($v) ? trim($v) : $v);} // has value - checks if $v has value pieņemsim, ka šī ir mana funkcija šim topikam ;) test it... foreach (array(null, true, false, 0, 123, '', ' ', 'asdf', array()) as $v) echo (hasVal($v) ? 'true' : 'false') . '<br />'; /* false true false false true false false true false */ vsp par tādiem nosaukumiem kā "navTukss()" - tas ir kkādā lv mentalitātes stilā 4erez noliegumu noliegšanu. imho, labāk definēt daudzmaz konstruktīvi "irVertiba()" vai "navVertiba()" (choose atkarībā no biežākā usage) Quote Link to comment Share on other sites More sharing options...
rausis Posted January 18, 2010 Report Share Posted January 18, 2010 (edited) 1. pārvērš baitus normālos lielumos 2. izveido SEO stringu function mksize($bytes) { $symbol = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); $exp = $converted_value = 0; if ($bytes > 0) { $exp = floor(log($bytes) / log(1024)); $converted_value = $bytes / pow(1024, floor($exp)); } return sprintf('%.2f '.$symbol[$exp], $converted_value); } function seo_string($str, $separator = '-') { setlocale(LC_ALL, 'en_US.UTF8'); return str_replace(' ', $separator, trim(preg_replace('/[^ A-Za-z0-9_]/', ' ', trim(iconv('UTF-8', 'ASCII//TRANSLIT', preg_replace('/[ -]+/', '-', $str)))))); } Edited January 18, 2010 by rausis Quote Link to comment Share on other sites More sharing options...
Kavacky Posted January 18, 2010 Report Share Posted January 18, 2010 Šitā dažkārt ir bijusi reāli useful: // (: function doNothing() { return 1; } Nopietni. Quote Link to comment Share on other sites More sharing options...
briedis Posted January 18, 2010 Report Share Posted January 18, 2010 (edited) Kavacky, ja tā, tad lūdzu pielietojuma piemērus studijā! :) Edited January 18, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
codez Posted January 18, 2010 Report Share Posted January 18, 2010 Rekursīva funkcija, lai arī N reizes var neko nedarīt. function doNothing($i){ return $i==1?1:doNothing($i-1); } Quote Link to comment Share on other sites More sharing options...
foxsk8 Posted January 19, 2010 Report Share Posted January 19, 2010 SEO title funkcija. http://paste.php.lv/38be3112138193590d7e0428b7f2b52b?lang=php $seotitle = $row['title']; $seotitle = teksts_uz_url($seotitle, $l = 'lv'); .htaccess RewriteRule ^offer/([^/\.]+)/([^/\.]+)/$ ads_item.php?id=$1&title=$2 [L] Quote Link to comment Share on other sites More sharing options...
2easy Posted January 19, 2010 Report Share Posted January 19, 2010 es zinu, kur Kavacky lieto to funkciju. droši vien noder, kodējot valsts pasūtījumus ;) // (: function doNothing() { return 1; } class Valsts { private $budzets, $aizdevums; function __construct($budzets) { $this->budzets = $budzets; } public function ievaktNodoklus() { // noslaukt tautu... @nodoklisParGaisaElposhanuUnParvietoshanos(); @kaaAriCinamiesArProblemamApliekotTasArNodokliem(); // ;) } public function izpilditValstsFunkcijas() { // infrastruktūras izveidošana/uzturēšana, efektīvas preču/pakalpojumu ražošanas veicināšana, izglītība, medicīna, policija, ugunsdzeseji, kultūra, ... if (rand(0, 9)) { // piekāst nodokļu maksātājus if (rand(0, 1)) { doNothing(); // <--------------------------- šeit!!! :D:D:D } else { while ($this->budzets > 0) { $this->iekamptPriekshSavasPartijas(); } $this->aiznemtiesNoStarptautiskajiemAizdevejiem(7000000000); while ($this->aizdevums > 0) { $this->iekamptPriekshSavasPartijas(); } } } else { // 10% varbūt tiek iztērēti arī kkam noderīgam @doSomethingUseful(); } } private function iekamptPriekshSavasPartijas() { if ($this->budzets > 0) { $this->budzets -= 100000000; } elseif ($this->aizdevums > 0) { $this->aizdevums -= 100000000; } } private function aiznemtiesNoStarptautiskajiemAizdevejiem($kreditaSumma) { $this->aizdevums = $kreditaSumma; } } $lv = new Valsts(4000000000); $lv->ievaktNodoklus(); $lv->izpilditValstsFunkcijas(); Quote Link to comment Share on other sites More sharing options...
Val Posted January 19, 2010 Report Share Posted January 19, 2010 vēl viens SEO title veids function seo_string($string, $len = 10, $seperator = '-') { $string = str_replace(array("ş", "Ş", "Ţ", "ţ", "ă", "î", "â"), array("s", "s", "t", "t", "a", "i", "a"), $string); //RO translit $string = str_replace(array("ā","č", "ē", "ģ", "ķ", "ļ", "ī", "ū", "š", "ņ", "ž"), array("a", "c", "e", "g", "k", "l", "i", "u", "s", "n", "z"), $string); //LV translit $string = str_replace(array("Ā","Č", "Ē", "Ģ", "Ķ", "Ļ", "Ī", "Ū", "Š", "Ņ", "Ž"), array("A", "C", "E", "G", "K", "L", "I", "U", "S", "N", "Z"), $string); //LV translit CAPS LOCK $string = str_replace(array("Ё","Ж","Ч","Ш","Щ","Э","Ю","Я","ё","ж","ч","ш","щ","э","ю","я","А","Б","В","Г","Д","Е","З","И","Й","К","Л","М","Н","О","П","Р","С","Т","У","Ф","Х","Ц","Ы","а","б","в","г","д","е","з","и","й","к","л","м","н","о","п","р","с","т","у","ф","х","ц","ь","ы"),array("JO","ZH","CH","SH","SCH","JE","JY","JA","jo","zh","ch","sh","sch","je","jy","ja","A","B","V","G","D","E","Z","I","J","K","L","M","N","O","P","R","S","T","U","F","H","C","Y","a","b","v","g","d","e","z","i","j","k","l","m","n","o","p","r","s","t","u","f","h","c","'","y"), $string); //RU translit $string = strtolower($string); $string = trim($string); $string = trim(@ereg_replace("[^ A-Za-z0-9_]", " ", $string)); #$string = ereg_replace("[ tnr]+", "-", $string); $string = str_replace(" ", $seperator, $string); $string = @ereg_replace("[ -]+", "-", $string); $t = explode($seperator, $string); if(count($t)>$len) { $out = array_slice($t, 0, $len); $string = implode($seperator, $out); }; return $string; }; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.