Xwab
Форумыnavigate_nextПрограммирование на PHP

Топ: Полезные Коды/Функции (см 1 пост)
Сообщения
Default_mo

Выкладываем полезные коды в эту тему.
просьба не повторятся.
==================
8.5.2010
В теме только коды, никаких обсуждений.
За нарушением будет следовать наказание.

Большие коды загружайте в виде текстовых файлов, в utf-8 кодировке.
==========
10.5.20010
Полезность каждого кода будет проверена, если будет возможность заменить код более лучшим, мы это сделаем.

08 Май 2010, 9:57
iceman12

Окончания по человечески)
<?php
function getNumberWord($value,$names){ 
    $temp = strval($value); 
    $temp = $temp[strlen($temp)-1]; 
    return (($temp>1 and $temp <5 and (intval($value)>19 or intval($value)<10))?$names[1]:($temp==1?$names[0]:$names[2])); 

   
// Пример работы 
$old = '25'; 
echo 'Мне '.$old.getNumberWord($old,array('год','года','лет'));
?>

08 Май 2010, 11:15
lIbERT

define( 'LOG', '/log' ); // куды кидаем логи
function mf_put_error( $code_type, $desc, $line = 0, $file = '', $mail = FALSE )
{
/** Функция записи кодов(ошибок)
* Автор DeAle
* Часть кода и идеи взяты со скриптов catalogue (автор UnKind) и goodbyte_click (автор GoodByte aka Diks)
* Вид: mf_put_code( тип кода(ошибки), описание, линия в файле, файл, отправка уведомления );
* Пример: mf_put_code( ERROR, 'Тестовое уведомление', __LINE__, __FILE__, true );
* Результат: запись в лог файл
*/

//Определение типа ошибки
switch( $code_type )
{
case 'WARNING' : $type = 'warning'; break; //Попытка взлома
case 'FATAL_ERROR' : $type = 'fatal'; break; //Фатальная ошибка
case 'SQL_ERROR' : $type = 'sql'; break; //Ошибки sql запросов
case 'ERROR' : $type = 'error'; break; //Обычные ошибки
case 'SYSTEM' : $type = 'system'; break; //Системные ощибки
default : $type = 'unn'; //Не известные. На случай пьяного коддинга
}

if ( ! file_exists( LOG ) )
mkdir( LOG, 0777 );
else if ( substr( sprintf( '%o', fileperms( LOG ) ), -4 ) != '0777' )
chmod( LOG, 0777 );

if ( ! file_exists( LOG . '/' . $type ) ) {
echo ( mkdir( LOG . '/' . $type, 0777 ) ) ? 'созданось' : 'не создалось' ;}
else if ( substr( sprintf( '%o', fileperms( LOG . '/' . $type ) ), -4 ) != '0777' )
chmod( LOG . '/' . $type, 0777 );

if ( ! file_exists( LOG . '/list.txt' ) )
{
$fo = fopen( LOG . '/list.txt', 'w+' );
chmod( LOG . '/list.txt', 0777 );
}
else if ( in_array( $type . " | " . htmlspecialchars( $desc ) . " | " . $file . " | " . $line . "\n", file( LOG . '/list.txt' ) ) )
return '';
else
$fo = fopen( LOG . '/list.txt', 'a+' );

fputs( $fo, $type . " | " . htmlspecialchars( $desc ) . " | " . $file . " | " . $line . "\n" );
fclose( $fo );

$rand = rand( 1, 999 );
$fp = fopen( LOG . '/' . $type . '/' . time( ) . '_' . $rand . '.txt', 'w' );
chmod( LOG . '/' . $type . '/' . time( ) . '_' . $rand . '.txt', 0777 );

$s_server = '';
$s_request = '';
$s_env = '';

foreach ( $_SERVER as $key => $value )
$s_server .= "'" . $key . "' = '" . $value . "'\n";

foreach ( $_REQUEST as $key => $value )
$s_request .= "'" . $key . "' = '" . $value . "'\n";

foreach ( $_ENV as $key => $value )
$s_env .= "'" . $key . "' = '" . $value . "'\n";

fputs( $fp, "Дата: " . date('d/m/Y H:i:s') . "\n" );
fputs( $fp, "IP: " . $_SERVER['REMOTE_ADDR'] . "\n" );
fputs( $fp, "Host: " . gethostbyaddr( $_SERVER['REMOTE_ADDR'] ) . "\n" );
fputs( $fp, "ENV:\n" . htmlspecialchars( trim( $s_env ) ) . "\n\n" );
fputs( $fp, "SERVER:\n" . htmlspecialchars( trim( $s_server ) ) . "\n\n" );
fputs( $fp, "REQUEST:\n" . htmlspecialchars( trim( $s_request ) ) . "\n" );
fputs( $fp, "Класификация ошибки:\n" );
fputs( $fp, $desc . "; (Файл:" . $file . " / Линия:" . $line . ")\n" );
fclose( $fp );

header( "Content-type: text/html; charset=utf-8" );
$err_text = "Ошибка: " . $desc . "; (Файл:" . $file . " / Линия:" . $line . ")\r\n";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type:text/plain;charset=utf-8\r\n";
$headers .= "From: Важные ошибки <system@" . $_SERVER['HTTP_HOST'] . ">\r\n";
mail( 'libert@sasisa.ru', $type, $err_text, $headers );


}

08 Май 2010, 11:18
iceman12

<?php
/**
*Определение числа файлов и их размер в папке произвольной вложенности
*/
//рекурсивная функция, которая вызывает сама себя
function count_files($directory)
{
//нужна внешняя переменная чтобы учитывать суммарное кол-во файлов
GLOBAL $i,$size;

//открываем директорию
$dir=opendir($directory);

//читаем директорию в цикле
while (false!==($file=readdir($dir)))
{
//если это файл, то
if (is_file($directory.'/'.$file))
{
//увеличиваем счетчик
++$i;

//увеличиваем размер
$size+=filesize($directory.'/'.$file);

/*если необходимо, то можно удалить все файлы для примера вот так:
unlink($directory.'/'.$file); */
}
//если же наткнулись на директорию
elseif (is_dir($directory.'/'.$file) && $file!='.' && $file!='..')
{
//снова вызываем функцию уже для этой директории
count_files($directory.'/'.$file);
}
}
//закрываем директорию
closedir($dir);
}

$i=0;
$size=0;

//посчитаем файлы в текущей директории
count_files('.');

echo 'файлов :'.$i;
echo ' размером :'.$size;

?>

08 Май 2010, 11:20
iceman12

<?php
// Дата по человечески. Применение: передаем функции время от начала эпохи UNIX
function human_time($var){
$d=date('d',$var);
$m=date('m',$var);
$y=date('y',$var);
switch($m){
case'01': $m='Янв';break;
case'02':$m='Фев';break;
case'03':$m='Мар';break;
case'04':$m='Апр';break;
case'05':$m='Май';break;
case'06':$m='Июн';break;
case'07':$m='Июл';break;
case'08':$m='Авг';break;
case'09':$m='Сен';break;
case'10':$m='Окт';break;
case'11':$m='Ноя';break;
case'12':$m='Дек';break;
}
$time=$d.' '.$m.' '.$y.', в '.date('H:i',$var);
return $time;
}
echo human_time(time());
?>

08 Май 2010, 11:25
Sich

Функция удаления файлов из директории через определенное время их хранения
function old($papka,$times){
$old_time = time()-60*$times;
$dir = opendir ($papka);
while ($file = readdir ($dir)) {
if (( $file != ".") && ($file != ".."))
$files[]="$papka/$file";
$time[]=filemtime("$papka/$file" );
}
closedir ($dir);
$count_files = count($files);
for($i = 1; $i< $count_files; $i++){
if($time[$i] <= $old_time){
@unlink($files[$i]);
}
}
}

08 Май 2010, 11:26
Sich

Функция перевода из Win в Utf и наоборот
function utf_to_win($str){
$str=strtr($str,array("Р°"=>"а","Р±"=>"б","РІ"=>"в","Рі"=>"г","Рґ"=>"д","Рµ"=>"е","С‘"=>"ё","Р¶"=>"ж","Р·"=>"з","Рё"=>"и","Р№"=>"й","Рє"=>"к","Р»"=>"л","Рј"=>"м","РЅ"=>"н","Рѕ"=>"о","Рї"=>"п","СЂ"=>"р","СЃ"=>"с","С‚"=>"т","Сѓ"=>"у","С„"=>"ф","С…"=>"х","С†"=>"ц","С‡"=>"ч","С?"=>"ш","С‰"=>"щ","СЉ"=>"ъ","С‹"=>"ы","СЊ"=>"ь","СЌ"=>"э","СЋ"=>"ю","СЏ"=>"я",
"Рђ"=>"А","Р‘"=>"Б","Р’"=>"В","Р“"=>"Г","Р”"=>"Д","Р•"=>"Е","РЃ"=>"Ё","Р–"=>"Ж","Р—"=>"З","Р?"=>"И","Р™"=>"Й","Рљ"=>"К","Р›"=>"Л","Рњ"=>"М","Рќ"=>"Н","Рћ"=>"О","Рџ"=>"П","Р*"=>"Р","РЎ"=>"С","Рў"=>"Т","РЈ"=>"У","Р¤"=>"Ф","РҐ"=>"Х","Р¦"=>"Ц","Р§"=>"Ч","РЁ"=>"Ш","Р©"=>"Щ","РЄ"=>"Ъ","Р«"=>"Ы","Р¬"=>"Ь","Р*"=>"Э","Р®"=>"Ю","РЇ"=>"Я"));
return $str;
}

function win_to_utf($str){
$str=strtr($str,array("а"=>"Р°","б"=>"Р±","в"=>"РІ","г"=>"Рі","д"=>"Рґ","е"=>"Рµ","ё"=>"С‘","ж"=>"Р¶","з"=>"Р·","и"=>"Рё","й"=>"Р№","к"=>"Рє","л"=>"Р»","м"=>"Рј","н"=>"РЅ","о"=>"Рѕ","п"=>"Рї","р"=>"СЂ","с"=>"СЃ","т"=>"С‚","у"=>"Сѓ","ф"=>"С„","х"=>"С…","ц"=>"С†","ч"=>"С‡","ш"=>"С?","щ"=>"С‰","ъ"=>"СЉ","ы"=>"С‹","ь"=>"СЊ","э"=>"СЌ","ю"=>"СЋ","я"=>"СЏ",
"А"=>"Рђ","Б"=>"Р‘","В"=>"Р’","Г"=>"Р“","Д"=>"Р”","Е"=>"Р•","Ё"=>"РЃ","Ж"=>"Р–","З"=>"Р—","И"=>"Р?","Й"=>"Р™","К"=>"Рљ","Л"=>"Р›","М"=>"Рњ","Н"=>"Рќ","О"=>"Рћ","П"=>"Рџ","Р"=>"Р*","С"=>"РЎ","Т"=>"Рў","У"=>"РЈ","Ф"=>"Р¤","Х"=>"РҐ","Ц"=>"Р¦","Ч"=>"Р§","Ш"=>"РЁ","Щ"=>"Р©","Ъ"=>"РЄ","Ы"=>"Р«","Ь"=>"Р¬","Э"=>"Р*","Ю"=>"Р®","Я"=>"РЇ"));
return $str;
}

08 Май 2010, 11:26
Sich

Функция определения расширения файла
function r($r,$t=null)
{
$f=explode('.',$r);
return strtolower($f[count($f)-1-$t]);
}

08 Май 2010, 11:27
Sich

Функция изменения размера изображения с выставлением качества
function img_resize($src, $out, $width, $height, $color = 0xFFFFFF, $quality = 100)
{
// Если файл не существует
if (!file_exists($src)) {
return false;
}
$size = getimagesize($src);
$format = strtolower(substr($size['mime'], strpos($size['mime'], '/') + 1));
$picfunc = 'imagecreatefrom'.$format;
$gor = $width / $size[0];
// Вертикальное соотношение
$ver = $height / $size[1];
// Если не задана высота, вычислить изходя из ширины, пропорционально
if ($height == 0) {
$ver = $gor;
$height = $ver * $size[1];
}
// Так же если не задана ширина
elseif ($width == 0) {
$gor = $ver;
$width = $gor * $size[0];}
// Формируем размер изображения
$ratio = min($gor, $ver);
// Нужно ли пропорциональное преобразование
if ($gor == $ratio)
$use_gor = true;
else
$use_gor = false
$new_width = $use_gor ? $width : floor($size[0] * $ratio);
$new_height = !$use_gor ? $height : floor($size[1] * $ratio);
$new_left = $use_gor ? 0 : floor(($width - $new_width) / 2);
$new_top = !$use_gor ? 0 : floor(($height - $new_height) / 2);
$picsrc = $picfunc($src);
// Создание изображения в памяти
$picout = imagecreatetruecolor($width, $height);
// Заполнение цветом
imagefill($picout, 0, 0, $color);
// Нанесение старого на новое
imagecopyresampled($picout, $picsrc, $new_left, $new_top, 0, 0, $new_width, $new_height, $size[0], $size[1]);
// Создание файла изображения
imagejpeg($picout, $out, $quality);
// Очистка памяти
imagedestroy($picsrc);
imagedestroy($picout);
return true;
}

08 Май 2010, 11:27
Sich

Функция массового переименования файлов в директории
function mass_rename($dir,$r1,$r2) {
$opdir=opendir($dir);
while ($a=readdir($opdir)) {
if ($a=='.' or $a=='..') continue;
if (is_file($dir.'/'.$a)) {
$b=str_replace($r1,$r2,$a);
rename($dir.'/'.$a,$dir.'/'.$b); }
else {
mass_rename($dir.'/'.$a,$r1,$r2); } }
closedir($opdir);
return $dir;
}

08 Май 2010, 11:28
Ответить на тему