10 полезных PHP сниппетов

phpsnippetsДобрый вечер пользователи сайта red-star.pro. В данной статье собрана небольшая подборка интересных PHP-сниппетов. Может кому нибудь они даже пригодятся.

1. Смена графики в зависимости от времени года

Функция

<?php

function current_season() {
       $icons = array(
               "spring" => "images/spring.png",
               "summer" => "images/summer.png",
               "autumn" => "images/autumn.png",
               "winter" => "images/winter.png"
       );

       $day = date("z");

       $spring_starts = date("z", strtotime("March 21"));
       $spring_ends   = date("z", strtotime("June 20"));

       $summer_starts = date("z", strtotime("June 21"));
       $summer_ends   = date("z", strtotime("September 22"));

       $autumn_starts = date("z", strtotime("September 23"));
       $autumn_ends   = date("z", strtotime("December 20"));

       if( $day >= $spring_starts && $day <= $spring_ends ) :
               $season = "spring";
       elseif( $day >= $summer_starts && $day <= $summer_ends ) :
               $season = "summer";
       elseif( $day >= $autumn_starts && $day <= $autumn_ends ) :
               $season = "autumn";
       else :
               $season = "winter";
       endif;

       $image_path = $icons[$season];

       echo $image_path;
}

?>

Использование


 

2. Генератор блока Copyright

Только год

© <?php echo date("Y") ?>

С начальным годом

© 2008-<?php echo date("Y") ?>

Альтернативный вариант

<?php function auto_copyright($year = 'auto'){ ?>
   <?php if(intval($year) == 'auto'){ $year = date('Y'); } ?>
   <?php if(intval($year) == date('Y')){ echo intval($year); } ?>
   <?php if(intval($year) < date('Y')){ echo intval($year) . ' - ' . date('Y'); } ?>
   <?php if(intval($year) > date('Y')){ echo date('Y'); } ?>
<?php } ?>

Использование

<?php auto_copyright(); // 2011?>

<?php auto_copyright('2010');  // 2010 - 2011 ?>

 

3. Перебор ассоциативного массива

Простой ассоциативный массив

$carParts = array(
   'Tires'=>100,
   'Window'=>1042,
   'DoorHandle'=>917
);

Массив из ассоциативных массивов

public $notifyPartners = array(
			array(
				'name' => 'Twitter',
				'tag'  => 'Social Network',
				'url'  => ''),
			array(
				'name' => 'Campaign Monitor',
				'tag'  => 'Email Marketing',
				'url'  => ''),
			array(
				'name' => 'Sendloop',
				'tag'  => 'Email Marketing',
				'url'  => ''),
			array(
				'name' => 'Highrise',
				'tag'  => 'CRM',
				'url'  => '')
);

Использование

foreach ($carParts as $key => $value) {
 echo $key.'=>'.$value.'
'; } // или while ($element = each($carParts)) { echo $element['key']; echo ' - '; echo $element['value']; echo '
'; }

 

4. Санитаризация переменных

function clean($value) {

       if(!get_magic_quotes_gpc())

       { $value = addslashes($value); }

       $value = strip_tags($value);

       return $value;

}

Использование

$sample = "test";
$sample = clean($sample);
echo $sample;

 

5. Генерация нового названия, если файл с таким именем уже существует

function file_newname($path, $filename){
    if ($pos = strrpos($filename, '.')) {
           $name = substr($filename, 0, $pos);
           $ext = substr($filename, $pos);
    } else {
           $name = $filename;
    }

    $newpath = $path.'/'.$filename;
    $newname = $filename;
    $counter = 0;
    while (file_exists($newpath)) {
           $newname = $name .'_'. $counter . $ext;
           $newpath = $path.'/'.$newname;
           $counter++;
     }

    return $newname;
}

Результат

myfile.jpg
myfile_0.jpg
myfile_1.jpg
 

6. Конвертация BR в символ новой строки

Вариант 1

function br2newline( $input ) {
     $out = str_replace( "
", "\n", $input ); $out = str_replace( "
", "\n", $out ); $out = str_replace( "
", "\n", $out ); $out = str_replace( "
", "\n", $out ); $out = str_replace( "
", "\n", $out ); $out = str_replace( "
", "\n", $out ); return $out; }

Вариант 2

function br2nl( $input ) {
 return preg_replace('//i', "\n", $input);
}

 

7. Вычисление времени работы скрипта

$execution_time = microtime(); # начало отсчёта

# Ваш код

$execution_time = microtime() - $execution_time;
$execution_time = sprintf('It took %.5f sec', $execution_time);

 

8. Обрезка изображения

<?php

$filename= "test.jpg";
list($w, $h, $type, $attr) = getimagesize($filename);
$src_im = imagecreatefromjpeg($filename);

$src_x = '0';   // начальная позиция x
$src_y = '0';   // начальная позиция y
$src_w = '100'; // ширина
$src_h = '100'; // высота
$dst_x = '0';   // координата результирующего изображения x
$dst_y = '0';   // координата результирующего изображения y

$dst_im = imagecreatetruecolor($src_w, $src_h);
$white = imagecolorallocate($dst_im, 255, 255, 255);
imagefill($dst_im, 0, 0, $white);

imagecopy($dst_im, $src_im, $dst_x, $dst_y, $src_x, $src_y, $src_w, $src_h);

header("Content-type: image/png");
imagepng($dst_im);
imagedestroy($dst_im);

?>

 

9. Определяем IE5-IE6

function getMSIE6() {
       $userAgent = strtolower($_SERVER["HTTP_USER_AGENT"]);
       if (ereg("msie 6", $userAgent) || ereg("msie 5", $userAgent)) {
               return true;
       }
       return false;
}

 

10. Определение AJAX запроса

if ( !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' )
{
       # Ваш код
}

 

Оригинал статьи: ruseller.com
Перевел: Станислав Протасевич

Статья для Вас подготовлена командой сайта www.red-star.pro.