Полезные функции РНР (1 пост)
1412
Кураторы темы:
Azzido
0
В данной теме предлагаю выкладывать именно полезные куски кода, которые в последствии юзеры смогут просто скопировать и вставить в свои скрипты и не создавать повторяющихся тем, вопросы в которых уже не раз обсуждались на форуме.
Уважаемые пользователи!
Просим вас вставлять код исключительно с тегами [code]
Внимание! Вопросы в этой теме запрещены!
Уважаемые пользователи!
Просим вас вставлять код исключительно с тегами [code]
Внимание! Вопросы в этой теме запрещены!
Изменил: Azzido (18.08.2015 / 16:19)
0
Функция сортировки файлов в директории по времени добавления:
<?php function sort_files($dir) { $d = dir($dir); while ($f = readdir($d)) { if ($f != '.' && $f != '..') { if (is_dir($dir . '/' . $f)) $arr += sort_files($dir . '/' . $f); else { $t = filemtime($dir . '/' . $f); $arr[$t] = $f; } } } close($d); krsort($arr); return $arr; } ?>Функция в результате выдаст массив с именами файлов в порядке "новые вверху".
Изменил: Azzido (18.08.2015 / 16:29)
0
Функция вывода приветствия на сайте:
<?php function greeting($_lang = "ru", $_offset = "") { $lang = array( 'ru' => array( 'morning' => 'Доброе утро!', 'afternoon' => 'Добрый день!', 'evening' => 'Добрый вечер!', 'night' => 'Доброй ночи!' ), 'en' => array( 'morning' => 'Good morning!', 'afternoon' => 'Good afternoon!', 'evening' => 'Good evening!', 'night' => 'Good night!' ) ); if (empty($_offset)) { // Если время на Вашем сервере отличается от Вашего, поменяйте сдвиг в переменной $offset $_offset = 0; } if (empty($_lang)) { // язык по умолчанию $_lang = 'ru'; } // $curr_hour = текущий час $curr_hour = date('G', time() + (60 * 60 * $_offset)); if ($curr_hour >= "5" && $curr_hour <= "11") { // если текущий час больше 5 и менее 11 return $lang[$_lang]['morning']; } elseif ($curr_hour >= "12" && $curr_hour <= "17") { // если текущий час больше 12 и менее 17 return $lang[$_lang]['afternoon']; } elseif ($curr_hour >= "18" && $curr_hour <= "20") { // если текущий час больше 18 и менее 20 return $lang[$_lang]['evening']; } else { // все другие случаи return $lang[$_lang]['night']; } } ?>
<?php // Выводим результат echo greeting(); ?>
Изменил: Azzido (18.08.2015 / 16:33)
0
Функция показа расширения файла заданного в параметре
<?php function pathinfo_utf($path, $options="") { if(strpos($path, '/') !== false){ $basename = end(explode('/', $path)); }elseif(strpos($path, '\\') !== false){ $basename = end(explode('\\', $path)); }else{ return(false); } if(empty($basename)) { return(false); } $dirname = substr($path, 0, strlen($path) - strlen($basename) - 1); if (strpos($basename, '.') !== false) { $extension = end(explode('.', $path)); $filename = substr($basename, 0, strlen($basename) - strlen($extension) - 1); } else { $extension = ''; $filename = $basename; } switch($options){ case PATHINFO_DIRNAME: return($dirname); break; case PATHINFO_BASENAME: return($basename); break; case PATHINFO_EXTENSION: return($extension); break; case PATHINFO_FILENAME: return($filename); break; default: return( array( 'dirname' => $dirname, 'basename' => $basename, 'extension' => $extension, 'filename' => $filename )); break; } } function extension($file){ if(function_exists('pathinfo_utf')){ $ext = pathinfo_utf($file, PATHINFO_EXTENSION); }else{ $ext = pathinfo($file, PATHINFO_EXTENSION); } $ext = strtolower($ext); return($ext); } ?>Пример работы:
<?php $fileext=extension("file.exe"); // $fileext равно exe $fileext=extension("FILE.sub.ExE"); // $fileext равно exe ?>
Изменил: Tony V (16.06.2010 / 15:27)
0
Функция вывода случайного пароля
<?php function genPass($size) { $letter = 'qwertyuipasdfghjklzxcvbnm'; $letter .= strtoupper($letter); $letter .= '123456789'; mt_srand((double)microtime()*1000000); $pass = ""; for ($i = 0; $i < $size; $i++) $pass .= $letter[mt_rand(0, strlen($letter)-1)]; return $pass; } ?>
Изменил: Azzido (14.08.2012 / 20:21)

Удаленный
15.05.2008 / 17:06
Дух
Дух
0
<?php /* рекурсивная функция спускается по каталогу и переименовывает файлы с расширениемя из $ext_arr по маске 001.расширение .. писал по просьбе знакомого,может кому пригодится ) */ function my_rename($dirname) { $ext_arr = array('jpeg', 'jpg', 'gif'); $dir = opendir($dirname); $count = 1; while (($file = readdir($dir)) !== false) { if (is_file($dirname . '/' . $file)) { $info = pathinfo($dirname . '/' . $file); if (in_array(strtolower($info['extension']), $ext_arr)) { rename($dirname . '/' . $file, $dirname . '/' . str_pad($count, 3, '0', STR_PAD_LEFT) . '.' . strtolower($info['extension'])); $count ++ ; } } elseif (is_dir($dirname . '/' . $file) && $file != '.' && $file != '..')my_rename($dirname . '/' . $file); } closedir($dir); } # пример использования $dir = 'papka'; my_rename($dir); ?>

Удаленный
28.03.2009 / 20:02
Дух
Дух
0
получение русск языч варианта окончания new
<?php /** * @desc Функция получения русскоязычного варианта окончания для переданного числа * @param float $value Число, для которого надо подобрать окончание * @param array $names Массив имён вида [0]имя одного; [1]имя от 2 до 4; [2]имя 0 и от 5 до 20 * @return string Возвращает соответствующее числу слово */ 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 = '21; echo 'Мне '.$old.' '.getNumberWord($old,array("год","года","лет")); ?>

Удаленный
28.03.2009 / 20:05
Дух
Дух
0
ф-ия проверки пароля на безопастность
/* Задача: Написать функцию проверки пароля на безопасность * длина не меньше 6 символов * должен содержать и символы и числа * не должен содержать больше (>=) 3 линейно расположенных на клавиатуре символов или цифр, например таких как "lkj" или "cvb" * если пароль безопасен — вернуть истину, нет — ложь */ function isGood ($pass) { $kbStrings = array('1234567890','qwertyuiop','asdfghjkl','zxcvbnm', '0987654321','poiuytrewq','lkjhgfdsa','mnbvcxz'); $isGood = false; if (strlen($pass) >= 6) { if (preg_match('/[a-z]/i',$pass) && preg_match('/[0-9]/',$pass)) { $count = strlen($pass) - 2; $isGood = true; } else { $isGood = false; break 2; } } } } } return $isGood; }
Артур
23.11.2009 / 19:12
Землянин
Землянин
0
<?php class Smiles { private $data = array(); private $pack = 'default'; public function __construct($pack) { $q = mysql_query('SELECT `name`, `file` FROM `smiles` WHERE `pack` = "'.$pack.'"'); while($i = mysql_fetch_assoc($q)) $this->data[$i['name']] = $i['file']; $this->pack = $pack; } public function replace($text) { foreach($this->data as $key=>$val) $text = str_replace($key, '<img src="/smiles/'.$this->pack.'/'.$val.'"/>', $text); return $text; } }Это пародия на предыдущую ф-ю, только на ООП. Не тестил, не знаю будет ли работать но вроде всё правильно

Таблица с полями name, file, pack
name - смайл
file - путь к смайлу, аля smile.png
pack - пак смайлов.
Использование
$smiles = new Smiles($smilepack);
$text = $smiles->replace($text);
0
Ф-я удаления файлов через определенное время из директории
<? 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]); } } } ?>далее
<? old('papka',30);//// будет удалять файлы которые лежат на севрере больше 30 минут, papka наша директория с файлами ?>проверял вроде все правильно теперь, можно использовать например для чистки кеша на сайте автоматически или удалять какието временные файлы которые через некоторое время не нужны на сервере.
Изменил: Azzido (18.08.2015 / 16:35)
Для выполнения действия необходимо авторизоваться!