Преобразование строки HEX в число INT с учётом знака

PHP
Как оказалось, преобразование строки HEX в число INT с учётом знака, не является тривиальной задачей. И для такой конвертации не предусмотрено стандартной функции)
Но, если смотреть на сайте php.net не только описание стандартных функций, но и комментарии к ним, то можно обнаружить интереснейшие решения, одно из которых я и предлагаю Вашему вниманию.
/**
     * Конвертация HEX в INT с знаком
     *
     * @param $hex
     *
     * @return number
     */
    function hex2decSigned($hex)
    {
        // очистка от символов, не входящих в HEX
        $hex = preg_replace('/[^0-9A-Fa-f]/', '', $hex);

        // конвертация в десятичное значение:
        $dec = hexdec($hex);

        // максимальное десятичное значение, основанное на длине hex + 1:
        // количество бит в шестнадцатеричное число-это 8 бит для каждого 2 hex -> max = 2^n
        // использование 'pow(2,n) -' с '1 << n' - только для целых чисел и, следовательно, ограничен integer.
        $max = pow(2, 4 * (strlen($hex) + (strlen($hex) % 2)));

        // complement = maximum - конвертированный hex:
        $_dec = $max - $dec;

        // если dec значение больше, чем complement, имеем отрицательное значение (первый бит)
        return $dec > $_dec ? -$_dec : $dec;
    }

П.С. также эта функция может использоваться как частичная реализация C функции atoi(HEX) в PHP.

Случайный выбор из массива в PHP

Как сделать случайный выбор элемента из массива в PHP?

Вот функция, которая это делает:

function getRandomEl($array){
    return $array[mt_rand(0, count($array)-1)];
}

Немного информации. Для получения случайного элемента массива используем генератор случайных чисел, а именно функцию mt_rand(от, до)от и до включительно.

Так как массивы у нас начинаются обычно с ноля, то используем диапазон от 0 до (длинна массива — 1).

Расширение файла средствами PHP

PHP
Есть несколько способов получить расширение файла средствами PHP
Но, благодаря пользователю хабра iBear, а точнее его статье с тестами, я выбрал самый быстрый способ:
function get_get($filename) {
    return substr(strrchr($fileName, '.'), 1);
  }

В данном случае функция strrchr возвращает всё с конца строки и до искомого символа "."
А функция substr возвращает строку без первого символа, что и есть расширение файла.

Автоматическое удаление временных файлов

Доброе зимнее утро всем читателям!
Скажу сразу, если у Вас есть опыт разработки приложений (сайтов) на PHP, скорее всего, Вы не найдёте в этой статье ничего нового. Но, если вы только учитесь, то моя идея может пригодится в дальнейшем.

Добавлю, что идея не проходила глубокий анализ (самому смешно) и оптимизацию. И написана за 5 минут из того, что первое пришло в голову. Итак, начнём.

Для чего нужно автоматическое удаление временных файлов?
Представим, что у меня сайт, который наполняют одновременно несколько человек (например — интернет магазин). Каждый товар имеет своё уникальное изображение, которое загружается до заполнения всех данных статьи. Иными словами, не во время Submit формы.

Так случилось, что временные изображения имеют имя, генерируемое PHP функцией uniqid().
uniqid('tmp_');
Имя файлов получается такие tmp_510a2c367f6a1.jpeg и сохраняются в отдельной папке. После сохранения товара, они переносятся с нужным именем в папку с изображениями товаров.

Бывает, что редакторы, не завершают добавления товара по различным причинам и временные файлы остаются. Так как наш товар, это изображения с высоким разрешением, средний временный файл может занимать на диске до 20Мб. Согласитесь, что мусорник папка с временными файлами очень скоро будет занимать много места.


Функция автоматического удаления временных файлов

Вывод товаров в категории нестандартным шаблоном в Opencart

Как же изменить внешний вид страницы вывода товаров в категории?
При работе с новым проектом пришлось осваивать CMS скрипт магазина OpenCart. Могу сказать, что в целом мне очень нравится эта платформа, модель MVC, хорошо реализованная логика, богатая функциональность.

Но, есть одно НО! Разрабатывается он сообществом, а значит в нём есть небольшие недоработки или ошибки. Поставлю большой плюс за то, что ошибки закрываются сообществом в достаточно короткие сроки.

Так вот, на что наткнулся я и не нашёл решения в русскоязычном сообществе OpenCart.
Есть категория, в которой будут продаваться изображения и нужно сделать к ней особый вывод. Но сделать это мне удалось не сразу.

Начну с того, что я воспользовался рекомендациями на официальном сайте OpenCart и их переводом, а именно:


Дальше есть код PHP

Обрезка с конца строки до точки в PHP

PHP
Обрезка с конца строки до конца предложения — точки
Задача такая… Обрезается текст по словам, нужно обрезать то, что получилось по последней точке. Тем самым сохранить целостность предложений.

Вот такая маленькая функция решила для меня эту задачу:

// $string - строка, которую нужно укоротить
function trim_to_dot($string) {
    $pos = strrpos($string, '.'); // поиск позиции точки с конца строки
    if (!$pos) {
        return $string; // если точка не найдена - возвращаем строку
    }
    return substr($string, 0, $pos + 1); // обрезаем строку используя количество 
                                         // символов до точки + 1 (сама точка, 
                                         // если она не нужна "+1" нужно убрать)
}// конец функции

Обрезка строки по словам php

PHP
Функция для обрезки строки по словам
Простая и полезная функция для обрезки строки по словам. Так получается красивее, чем обрезать по символам. Слова остаются целыми.

// $input_text - исходная строка
// $limit = 50 - количество слов по умолчанию
// $end_str - символ/строка завершения. Вставляется в конце обрезанной строки
function words_limit($input_text, $limit = 50, $end_str = '') {
    $input_text = strip_tags($input_text);
    $words = explode(' ', $input_text); // создаём из строки массив слов
    if ($limit < 1 || sizeof($words) <= $limit) { // если лимит указан не верно или количество слов меньше лимита, то возвращаем исходную строку
        return $input_text;
    }
    $words = array_slice($words, 0, $limit); // укорачиваем массив до нужной длины
    $out = implode(' ', $words);
    return $out.$end_str; //возвращаем строку + символ/строка завершения
}

P.S. Модифицированный вариант спасибо Maugli