Полезные функции РНР (1 пост)

Печать RSS
1531
Кураторы темы:

K

Транклюкаторщик
0
функция полезна тем кто использует файлы как таблицу для хранения информации (типа "Вася Пупкин|10 лет|город Москва|")
функция для замены отдельного блока информации в файле
(например заменить блок "город Москва" на "поселок Эльбан")
пример использования:
explode_replace('|',0,'поселок Эльбан',1,'file.txt');

<?
function explode_replace($exploder,$ex_num,$to,$str_num,$file){

# $exploder - разделитель
# $ex_num - номер заменяемого блока (отсчет с 0)
# $to - на что заменяем
# $str_num - номер строки в которой производим замену (отсчет с 0)
# $file - файл в котором производим замену

$a = file($file);

$ex = explode($exploder,$a[$str_num]);
$ex[$ex_num] = $to;
$a[$str_num] = implode($exploder,$ex);

if(file_put_contents($file,$a)){return true;} else {return false;}
}
?>
Изменил: KOZZ (05.11.2010 / 21:52)
4

Пришелец
0
Склоняем русские слова

function russian_text($koll = 0, $words = 0) {
    if ($koll < 11 or $koll > 19) {
        $koll = (string )$koll;
        switch ($koll{mb_strlen($koll) - 1}) {
            case 1:
                return ($words[0]);
                break;
            case 2:
            case 3:
            case 4:
                return ($words[1]);
                break;
            default:
                return ($words[2]);
                break;
        }
    }
    else
        return ($words[2]);
}
В

Кодер
0
/**
* Функция рекурсивного подсчета файлов в папке
*/
function filedircount($dir)
{
	$count = 0;
   	if ($objs = glob($dir."/*")) {
		foreach($objs as $obj) {
	 		if(is_dir($obj)) {
				$count += filedircount($obj);
			} else {
				++$count;
			}
		}
   }
   return $count;
}
Изменил: Владислав (15.11.2010 / 17:51)
Е

Пришелец
0
функции для проверки, начинается/заканчивается ли строка подстрокой (аналог startsWith/endsWith в Java)

function startsWith($haystack, $needle, $case=true) {
    if ($case)
        return strncmp($haystack, $needle, strlen($needle)) == 0;
    else
        return strncasecmp($haystack, $needle, strlen($needle)) == 0;
}

function endsWith($haystack, $needle, $case=true) {
     return startsWith(strrev($haystack),strrev($needle),$case);
}
Изменил: Евгений (15.11.2010 / 21:12)

ツ ツ ツ
0
<? 
/*Зебра с неограниченным количеством дивов 
Указываем список дивов и функция выводит их по очереди*/
function zebra(){
	static $divs;
	if(!isset($divs) || $divs != func_get_args()) $divs = func_get_args();
	$div = current($divs);
	if(next($divs) === false) reset($divs);
	return $div;
}

//Пример:
for ($i=0; $i<10; $i++) {
	$div = zebra('zebra1', 'zebra2');
	echo '<div class="'.$div.'">'.$div.'</div>';
}
Изменил: Lugaro (25.11.2010 / 17:14)
K

Транклюкаторщик
0
<?
// Функция для того, чтобы иЗyPoДоВаТь текст
$str = 'бросайте вы корявить текст';

function koryavka ($t){
$c = strlen($t);

for($i=0;$i<$c;$i++) {
$t[$i] = (is_int($i/2)) ? strtoupper($t[$i]) : $t[$i];
$ret[] = $t[$i];
}

return implode('',$ret);
}

echo koryavka ($str);
?>
K

Транклюкаторщик
0
<?
# функция градиента текста (переливание цвета)
function gradient($text, $hexfrom, $hexto){

$text = iconv('utf-8','windows-1251',$text);
$colorsteps = strlen($text);

$fromrgb['r'] = hexdec(substr($hexfrom, 0, 2));
$fromrgb['g'] = hexdec(substr($hexfrom, 2, 2));
$fromrgb['b'] = hexdec(substr($hexfrom, 4, 2));
 
$torgb['r'] = hexdec(substr($hexto, 0, 2));
$torgb['g'] = hexdec(substr($hexto, 2, 2));
$torgb['b'] = hexdec(substr($hexto, 4, 2));
 
$steprgb['r'] = ($fromrgb['r'] - $torgb['r']) / ($colorsteps - 1);
$steprgb['g'] = ($fromrgb['g'] - $torgb['g']) / ($colorsteps - 1);
$steprgb['b'] = ($fromrgb['b'] - $torgb['b']) / ($colorsteps - 1);
 
for($i = 0; $i <= $colorsteps; $i++){

$rgb['r'] = floor($fromrgb['r'] - ($steprgb['r'] * $i));
$rgb['g'] = floor($fromrgb['g'] - ($steprgb['g'] * $i));
$rgb['b'] = floor($fromrgb['b'] - ($steprgb['b'] * $i));
 
$hexrgb['r'] = sprintf('%02x', ($rgb['r']));
$hexrgb['g'] = sprintf('%02x', ($rgb['g']));
$hexrgb['b'] = sprintf('%02x', ($rgb['b']));

$color = implode(null, $hexrgb);
 
$return .= '<font color="'.$color.'">'.$text[$i].'</font>';

}

return iconv('windows-1251','utf-8',$return);
}

echo gradient('Супер пупер текст в градиенте','000000', 'FF0000'); // пример использования
?>
Изменил: KOZZ (11.12.2010 / 07:41)

ツ ツ ツ
0
Наткнулся в одном блоге на неплохую функцию, только переделал установку параметров, ато там слишком длинно было.
Исходный вариант и саму суть можно тут посмотреть http://www.manhunter.ru/webmaster/15_seychas_na_sayte_2_gostey_i_3_novostey.html
<?
function num2word() {
	$args = func_get_args();
	$num = $args[0]%100;
	if ($num>19) { $num=$num%10; }
	switch ($num) {
		case 1:  { return $args[1]; }
		case 2:
		case 3:
		case 4:  { return $args[2]; }
		default: { return $args[3]; }
	}
}
?>
Пример:
<?
echo '1 '.num2word(1, 'рубль', 'рубля', 'рублей'); // 1 рубль
echo '2 '.num2word(2, 'рубль', 'рубля', 'рублей'); // 2 рубля
echo '5 '.num2word(5, 'рубль', 'рубля', 'рублей'); // 5 рублей
?>
Конечно при многократном использовании с одинаковыми параметрами исходный вариант был бы удобней, но по сути такое многократное применение бывает очень редко
Изменил: Lugaro (24.12.2010 / 08:03)

Персональный статус
0
выведет список файлов из директории по маске имени файлв
<?php
function SearchMaska($dir, $maska){
// Открыть заведомо существующий каталог и начать считывать его содержимое
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
	   if(($file !=".") && ($file !="..")){
	       if($myfile = stristr($file,$maska)){
           print "Файл: $myfile<br/>";
		   }
		   }
       }
       closedir($dh);
   }
}
}
SearchMaska('dir/', 'filename'); //// часть имени файла
?>
М

Пацак
0
Более легкий вариант)
<?php 
function SearchMaska($dir, $maska){ 

	if (is_dir($dir)) {

		foreach(array_diff(scandir($dir), array('.', '..')) as $file) {
			if($myfile = stristr($file, $maska))
			   echo 'Файл: '.$myfile.'<br/>'; 
		
		}
	   
	} 
}
SearchMaska('dir/', 'filename'); //// часть имени файла 
?>
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск