Динамическое формирование окончания слов во множественном числе

Достаточно для анализа 10 символов чтобы делать правильное окончание.

Метод на ruby:

 def spelling(number)
  last_digit = number.to_s.split(//).last(1).join # identify last digit
  spell = "" if last_digit == "1"
  spell = "а" if last_digit =~ /^([2-4])$/
  spell = "ов" if last_digit =~ /^([0]|[5-9])$/
  two_last_digit = number.to_s.split(//).last(2).join # identify last two digit
  spell = "ов" if two_last_digit =~ /^([1][1-9])$/
  spell
 end

puts "Вы можете подписаться еще на <count> объект#{spelling(<count>)}"

Метод на php – не очень грамотно написан (лучше array и сопоставление, regexp как в случае с ruby или ifelse), но рабочий:

function spelling($number)
{
 $splitted_array = str_split("$number");
 $last_digit = end($splitted_array);
 $penultimate = prev($splitted_array);
 if ($penultimate == "1") {return "ов";}
 if ($last_digit == "1") {return "";}
 if ($last_digit == "2") {return "а";}
 if ($last_digit == "3") {return "а";}
 if ($last_digit == "4") {return "а";}
 if ($last_digit == "0") {return "ов";}
 if ($last_digit == "5") {return "ов";}
 if ($last_digit == "6") {return "ов";}
 if ($last_digit == "7") {return "ов";}
 if ($last_digit == "8") {return "ов";}
 if ($last_digit == "9") {return "ов";}
}

$spell = spelling($res_users);
echo "Влияние: $res_users клиент$spell";

 

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

Редирект на изначально запрашиваемую страницу после авторизации на базе PHP

Redirect делается обычно на основе запрашиваемого URL из переменной $_SERVER[‘REQUEST_URI’], далее назовем это query URL.

Первоначально редиректим на страницу авторизации с указанием запрашиваемого url из query URL в переменной location.

header("Location:login.php?location=" . $_SERVER['REQUEST_URI'] );

Уже на странице авторизации после успешной авторизации делаем тоже самое – забираем query URL.

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

PHP: работа с БД Oracle используя расширение oci8 в Ubuntu 14.04

Install
Установка расширения Oci8 для работы с БД Oracle.
Ставим pecl.
sudo apt-get install php-pear php-xml php7.0-xml php7.0-dev 
sudo apt-get install pecl
Через pecl ставим Oci8. При установке указываем путь в oracle lib.
sudo pecl install oci8 
instantclient,/usr/lib/oracle/<ver>/client64/lib
Добавляем extension в php.ini.


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

PHP: установка php7 на ubuntu 14.04

PHP7

Является самой актуальной и производительной версией php.

Установка php7 на Ubuntu 14.04 делается через предварительное добавление app-репозитория ppa:ondrej/php.

sudo apt-get install python-software-properties software-properties-common
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php
sudo apt-get update

Далее удаляем опционально php5 (Purge удалит и конфигурационные файлы).

sudo apt-get remove php5-common –y
sudo apt-get purge php5-common -y

Ставим php7.

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

PHP serialize и json

PHP serialize – метод превращения данных (строки, массива) в байт строку с возможностью последующего извлечения через unserialize. Ранее был популярен, но сейчас лучше использовать json:

  1. serialize работает только в php
  2. serialize из коробки имеет проблемы со спец. символами (пример ниже)

Ошибка “Notice: unserialize(): Error at offset 454707 of 455688 bytes in”

Варианты решения:

  1. переделать на json – самый простой и эффективный на практике
  2. использовать DECOCE – учитываем, что не работает с array
  3. использовать REGEXP для удаления “плохих” символов массого – можно потерять часть данных
  4. искать символ(ы)  по значению байта (455688) на которые ругается serialize через dd, sql в базу и прочие шаманства и удалять их направленно

json – по сути аналог serialize, только более стандартизирован и стабилен.

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

PHP: простая файловая шара (upload, download, delete, open)

DOWNLOAD/OPEN

При генерации файла обязательно делаем скобки вокруг “file_name”, иначе в случае если в имени файла есть пробел firefox будет показывать только первое слово, хотя другие браузеры этим страдать не будут. Mozilla давно сказала, что исправлять это не будет т.к. такое поведение соответствует RFC.

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

phantomjs – парсинг web с поддержкой js

Зачем
В отличии от mechanize, который очень удобен и функционален, phantomjs, судя прямо из названия, поддерживает исполнение javascript без установки браузера.
Установка
Устанавливать проще всего через apt-get/yum. Можно так же скачать пакет с сайта, плюсом будет самая свежая версия пакета.

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

Несколько полезных JavaScript

confirm при нажатии на кнопку

Например кнопку “удалить” в файловой шаре.

echo "<td><button type=submit name=file_dlt value=\"$file\" onclick=\"return confirm('Вы уверены?')\">Удалить</button></td>";
Добавление строки в таблицу по OnClick

Стырено отсюда. Причем штука настолько крутая, что копирует весь html от строки родителя – значения полей (в моем кейсе хорошо), checkbox, связанные.

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

PHP библиотека PHPExcel для работы с Excel

Для работы с Excel использовал библиотеку PHPExcel. Установка простейшая – кладем папку Classes в нужную папку на сервере, указываем корректные пути в include/require.

Примеры кода по чтению/генерации файлов Excel можно посмотреть на github странице библиотеки.

 

Красивости

и этим не ограничивается функционал, это лишь то, что использовал:

  • mergeCells(“cell_range”) – Объединение указанных ячеек в одну.


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

HTTP get/post запросы

Передача

Для GET не обязательно указывать метод. Если не указывать action, то будет вызвана повторно текущая страница и на нее будут передан запрос выбранным методом.

Примеры:

echo "<form action=test2.php>";
echo "<input type=submit name=s_button value=\"Выгрузить\" id=\"submit\">";
echo "<input type=\"hidden\" name=\"test\" value=\"$test\"/>";
echo "</form>";

echo "<form action=test2.php method=\"post\">";
echo "<input type=submit name=s_button value=\"Выгрузить\" id=\"submit\">";
echo "<input type=\"hidden\" name=\"test\" value=\"$test\"/>";
echo "</form>";

И то что прямо наболело – не нужно передавать SQL-запросы, особенно с помощью GET, даже в корпоративной сети.

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