СниппетыФункция для сокращения ссылки через goo.gl

Лично я довольно часто пользуюсь сокращалкой и использую именно goo.gl. Просто, красиво и со статистикой. Грех было бы не написать немного кода работающего с востребованным сервисом.

/**
 * This function allows you to shorten link via goo.gl service
 *
 * @param $url   Url to be shorten
 *
 * @return mixed Array that consist of shortened link and other params
 */


function googleShortUrl($url)
{
    $apiKey      = 'AIzaSyDPDLH11GFnTHCZJBUAXh6BOLqttgaFmU4';
    $curlHandler = curl_init();

    //preparing the request
    curl_setopt($curlHandler, CURLOPT_URL, 'https://www.googleapis.com/urlshortener/v1/url');
    curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curlHandler, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt($curlHandler, CURLOPT_HTTPHEADER, array('content-type: application/json'));
    curl_setopt($curlHandler, CURLOPT_POST, 1);
    curl_setopt($curlHandler, CURLOPT_POSTFIELDS, json_encode(array('longUrl' => $url,'key' => $apiKey)));
   
    $response = json_decode(curl_exec($curlHandler), 1);
    /*
        array('kind', 'id', 'longUrl')
        id - is shortened url
    */


    curl_close($curlHandler);

    return $response;
}

СниппетыДата и время на PHP для любого часового пояса

У php такая особенность, что функции time(), mktime() и gmmktime() возвращают одно и то же значение. Используя функции date() или gmdate() можно получить время только в 2 часовых поясах: в локальном и в нулевом. Задачу решает нижеприведённая функция:

function tzDate($format, $offset)
{
    return date($format, time() - date("Z") + $offset * 3600);
}

Альтернативное корявое решение есть ещё на php.net, но это на любителя :)

СниппетыPHP функция транслита работающая с UTF-8

Наваял функцию. Проста как угол дома. Преимущество в том, что не использует ни iconv, ни mb_ функции. Сомнительное преимущество, правда?) Зато работать будет везде и в отличии от strtr свободно хавает кириллицу в utf-8

function getTranslit($str)
{
    $cyr = array('А',  'а',  'Б',   'б',   'В',  'в',  'Г',  'г',  'Д',  'д',
                 'Е',  'е',  'Ё',   'ё',   'Ж',  'ж',  'З',  'з',  'И',  'и',
                 'Й',  'й',  'К',   'к',   'Л',  'л',  'М',  'м',  'Н',  'н',
                 'О',  'о',  'П',   'п',   'Р',  'р',  'С',  'с',  'Т',  'т',
                 'У',  'у',  'Ф',   'ф',   'Х',  'х',  'Ц',  'ц',  'Ч',  'ч',
                 'Ш',  'ш',  'Щ',   'щ',   'Ъ',  'ъ',  'Ы',  'ы',  'Ь',  'ь',
                 'Э',  'э',  'Ю',   'ю',   'Я',  'я',  'Є',  'є',  'Ї',  'ї',
                 'І',  'і',  'Ґ',   'ґ');

    $lat = array('A',  'a',  'B',   'b',   'V',  'v',  'G',  'g',  'D',  'd',
                 'E',  'E',  'Yo',  'yo',  'Zh', 'zh', 'Z',  'z',  'I',  'i',
                 'J',  'j',  'K',   'k',   'L',  'l',  'M',  'm',  'N',  'n',
                 'O',  'o',  'P',   'p',   'R',  'r',  'S',  's',  'T',  't',
                 'U',  'u',  'F',   'f',   'H',  'h',  'C',  'c',  'Ch', 'ch',
                 'Sh', 'sh', 'Shh', 'shh', '"',  '"',  'Y',  'y',  '\'', '\'',
                 'E',  'e',  'Yu',  'yu',  'Ya', 'ya', 'Ye', 'ye', 'Yi', 'yi',
                 'I',  'i',  'G',   'g');

    return str_replace($cyr, $lat, $str);
}

Обратное преобразование посчитал ненужной фичей и отказался от него.