Несколько полезных функций, которые могут потребоваться в "повседневном" коде:
#PHP
<?php
/* общая функция вывода времени */
function data($in){
if($in<1){
return false;
}else{
static $d=array(
'Воскресенье',
'Понедельник',
'Вторник',
'Среда',
'Четверг',
'Пятница',
'Суббота'); // создаем массив с днями недели и запоминаем его через static, чтобы при каждом вызове заново не создавать это массив
$day='<small>'.$d[date('w',$in)].', </small>';
if(date('Y',$in)!=date('Y',time())){
return $day.date(date('j',$in).' '.month(date('n',$in)).'..'.date('G',$in).'<b>:</b>i \'y',$in);
}else{
return $day.date(date('j',$in).' '.month(date('n',$in)).'..'.date('G',$in).'<b>:</b>i',$in);
}
}
}
// пример
echo data(time());
/* функция определения месяца по его номеру как для строки, так и для массива */
function month($in){
static $month=array('',
'Янв',
'Фев',
'Мар',
'Апр',
'Мая',
'Июня',
'Июля',
'Авг',
'Сен',
'Окт',
'Ноя',
'Дек');
if(!is_array($in)){
return $month[$in];
}else{
foreach($in as $k=>$v){
$in[$k]=$month[$v];
}
return $in;
}
}
// пример
echo month(5); // май
// или
print_r(month(array(3,7,9))); // array('март','июль','сентябрь');
#PHP
<?php
/* функция защиты от xss уязвимости как для строк, так и для многомерных массивов */
function xss($in){
if(is_array($in)){
return array_map('fxss',$in);
}else{
return fxss($in);
}
}
/* вспомогательная функция защиты от xss уязвимости */
function fxss($in){
if(is_array($in)){
return xss($in);
}else{
return strtr(htmlspecialchars($in,ENT_QUOTES,'UTF-8'), array('%'=>'%','_'=>'_'));
}
}
/* обратная функция, функции xss */
function dexss($in){
if(is_array($in)){
return array_map('defxss',$in);
}else{
return defxss($in);
}
}
/* вспомогательная функция для функции dexss */
function defxss($in){
if(is_array($in)){
return dexss($in);
}else{
return htmlspecialchars_decode(trim(strtr($in,array('%'=>'%','_'=>'_'))),ENT_QUOTES);
}
}
// Из этих 4 функций применяются только 2, и одна из них очень редко.
// Для защиты от xss уязвимости фильтруем строку или массив так:
echo xss($_POST['name']); // отфильтрует только этот элемент массива
// если нужно отфильтровать весь массив, применять ее нужно так же
echo xss($_POST); // отфильтрует весь массив, но не рекомендуется фильтровать таким образом массивы: $_POST, $_GET, $_REQUEST и $_COOKIE из-за возможно большой величины
// применение функции декодирования dexss() аналогичное
#PHP
<?php
/* функция определения размера файла или данных */
function size($in){
if($in>=1073741824){
return '<b>'.round($in/1073741824 ,2).'</b> гб';
}elseif($in>=1048576){
return '<b>'.round($in/1048576 ,2).'</b> мб';
}elseif($in>=1024){
return '<b>'.round($in/1024 ,2).'</b> кб';
}else{
return '<b>'.round($in).'</b> байт';
}
}
$filesize=filesize('123.zip'); // записываем размер файла в байтах в переменную
echo size($filesize); // выводим размер файла
#PHP
<?php
function genpass($value1,$value2,$value3,$value4,$value5){
$abc=array(); // создаем массив с генерируемыми символами
if($value1){
foreach(range(0,9) as $i){$abc[]=$i;} // добавляем цифры
}
if($value2){
foreach(range('A','Z') as $i){$abc[]=$i;} // добавляем буквы верхнего регистра
}
if($value3){
foreach(range('a','z') as $i){$abc[]=$i;} // добавляем буквы нижнего регистра
}
if($value4){
$ii=array('#','!','"','$','%',"'",'(',')','*','+',',','-','.','/',':','<','=','>','?','@','[','\\',']','^','_','`','{','|','}','~'); // создаем временный массив с сиволами
foreach($ii as $i){$abc[]=$i;} // добавляем эти символы
}
for($i=0,$pass='',$s=sizeof($abc);$i<$value5;$i++){
$pass.=$abc[mt_rand(0,$s)]; // создаем генерируемый пароль
}
return $pass;
}
// пример
echo genpass (true,true,true,true,10); // выдаст набор букв разного регистра, цифер и симолов, в количестве 10
/* пояснение аргументов:
1 - включить ли цифры в генерируемый пароль (true или false)
2 - включить ли буквы верхнего регистра в генерируемый пароль (true или false)
3 - включить ли буквы нижнего регистра в генерируемый пароль (true или false)
4 - включить ли символы в генерируемый пароль (true или false)
5 - количество генерируемых символов
*/
#PHP
<?php
/* функция подсчета времени между 2 датами (за месяц взято 30,5 дней. Это некритично) */
function online($total,$go=false){
$ret='';$total=abs($total); // создаем переменную, которую нужно будет вернуть, ее мы будем наполнять и удаляем минус из переменной с полученным временем(если таковой имеется)
#####
if($total>=31622400){ // если полученное время больше 31622400 секунд
#####
$year=$total/31622400; // полчаем полное кол-во лет
$y=intval($year); // округляем в меньшую сторону
$end=mb_substr($y,-1); // получаем последнюю цифру года для определения слова (год,лет,года)
if(($year>4 and $year<21) or ($end>4 and $end<10) or !$end){$who=' лет ';}elseif($end>1 and $end<5){$who=' года ';}else{$who=' год ';} // определяем это слово
$ret=$y.$who.online(($year-$y)*31622400,true); // определяем остаток времени путем вычитания $year и $y
#####
// аналогичные операции и с остальными пунктами
}elseif($total>=2635200){
#####
$month=$total/2635200;
$m=intval($month);
if($m){$ret=$m.' мес.';
if(!$go){$ret.=' '.online(($month-$m)*2635200,true);}
}
#####
}elseif($total>=86400){
#####
$day=$total/86400;
$d=intval($day);
if($d){$ret=$d.' дн.';
if(!$go){$ret.=' '.online(($day-$d)*86400,true);}
}
#####
}elseif($total>=3600){
#####
$hour=$total/3600;
$h=intval($hour);
if($h){$ret=$h.' час.';
if(!$go){$ret.=' '.online(($hour-$h)*3600);}
}
#####
}elseif($total){
#####
$min=intval($total/60);
if($min){$ret=$min.' мин.';}
#####
}
#####
return trim($ret);
}
$data=mktime(0,0,0,1,1,1999); // создаем метку времени для 1 января 1999г
echo online(time()-$data); // рассчитываем разницу между датами и получаем результат
#PHP
<?php
/* функция антирекламы. полезная однако штука */
function rekl($in){
return preg_replace('#([a-z0-9\\s\-\.]){3,20}(\.|,)([a-z\\s]){2,4}#si','[реклама]',$in);
}
// пример
echo rekl('bak ler.o rg'); // сработает антиреклама