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

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

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

Полнотекстовый поиск для сайта OpenCart используя PHP + MySQL

Сегодня хочу рассказать о реализации полнотекстового поиска на проекте, «в ядре» которого используется OpenCart. Почему «в ядре», да потому, что 60% там переписано. Но, ближе к теме)

Технология поиска
В качестве технологии для полнотекстового поиска будем использовать FULLTEXT индекс таблицы MyISAM MySQL.
Я не буду расписывать полностью готовый и рабочий пример. Скорее опишу саму технологию, так сказать подход к решению задачи.

Описание задачи
Есть большое количество товара, в данном случае репродукции картин. У них есть параметры, назову их ключи поиска:
  • название работы,
  • автор,
  • категории,
  • теги.
Нужно реализовать полнотекстовый поиск по этим полям. Как дополнение, если полнотекстовый поиск не дал результатов то нужно выполнить поиск вхождения искомой строки в том же множестве ключей.


Реализация задачи

А что за циферки??? Или подробнее о кодах ошибок в переменной $_FILES['file']['error'].

PHP
В конце прошлой недели разбирался с проблемами, которые, начали возникать в работе одного из старых проектов, одна из них была связана с загрузкой файлов на сервер. Проблема была решена довольно таки быстро, после просмотра значений суперглобального массива $_FILES, а точнее переменной $_FILES['file']['error']. Код возвращаемой ошибки – 1, довольно быстро помог справиться с задачей, а теперь разберемся в значениях данной переменной и что же делать, если ее значение больше нуля.

Читать дальше

Обрезка строк в файле средствами PHP

PHP
По просьбе одного из наших читателей, небольшое дополнение к статье Обрезка строки по словам php.

Читатель попросил реализовать обрезку строк в файле. Во всяком случае мы так поняли и предлагаем своё решение данного вопроса.

Итак, как реализовать обрезку строк в файле средствами PHP?
Для начала прочитаем содержимое файла в массив с разбивая на строки таким образом, чтоб каждому элементу массива соответствовала каждая строка файла.

Для этого будем использовать готовую функцию file()
$strings = file('src.txt', FILE_SKIP_EMPTY_LINES);
FILE_SKIP_EMPTY_LINES — означает, что не нужно читать пустые строки.

Теперь, обработаем строки уже знакомой нам функцией words_limit()
// $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; //возвращаем строку + символ/строка завершения
}


Читать дальше

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

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

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

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

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

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


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

Как определить, что файл является картинкой?

PHP
Как определить, что файл является картинкой?

И снова подсунулась задача одним их проектов, каталог содержит базу электронных документов, но документы могут быть как файлами word, excel и т.д., так и изображениями. Соответственно если файл изображение, то нужно подключить просмотр изображений, в противном случае ссылка для скачивания, то есть нам нужно понимать является ли файл изображением.


Читать дальше

Удалить первый элемент массива в php

PHP

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

Чтоб удалить первый элемент массива можно использовать команду
array_shift ( array &$array ).
array_shift() извлекает первое значение массива array и возвращает его, сокращая размер array на один элемент. Все числовые ключи будут изменены таким образом, что нумерация массива начнётся с нуля, в то время как строковые ключи останутся прежними.

Код очень простой. Пример:
$array = array(1,2,3,4,5,6);
array_shift($array);
// в результате получим массив array(2,3,4,5,6)

Доработаем SEF URL в OpenCart

Доработаем алгоритм создание человекопонятных ссылок в OpenCart
Пришла мысль, что SEF (ЧПУ) ссылки нужны всегда, а при создании товара в OpenCart их приходится вводить вручную и не всегда про это вспоминаешь.

Так вот, предлагаю идею по оптимизации данного процесса.

Идея состоит в том, что ссылки будут генерироваться автоматически, используя ID товара и… (там уже Вам решать что использовать).

Итак, немного изменим модули!


Самое интересное...!

Символ знака вопроса вместо русских букв при загрузке данных из MySQL

Раньше такая проблема попадалась, а сегодня — «на тебе...»! Вместо сокращения «шт» (штук) из базы данных MySQL приходят знаки вопроса. При чём не одинаковые, а разные)) Один просто знак вопроса, второй — знак вопроса в ромбе.

Начал проверять, вроде всё правильно. Файлы проекта utf-8. Кодировка при подключении к базе utf-8.

Но где же проблема?

Избавился от крякозяблов (знаков вопроса) вместо русского текста

Так как сегодня воскресенье и звонить хостерам, скорее всего, бесполезно (поддержка конечно работает, но в выходной день там может быть не совсем адекватный специалист), я решил поискать в сети, как другие решали подобные задачи.

Самое частое решение — поиск нужной кодировки при подключении к MySQL серверу. Сразу скажу, что пользуюсь услугами провайдера HvOSTING.UA. И для моего сервера подошла кодировка latin1 как это и не странно!

Немного кода на PHP для примера. Использую объектную модель mysqli:
$mysqli_object->set_charset('latin1');

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

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

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

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

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


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