Skip to content

korotin/php-su

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

php-su

Библиотека представляет собой собрание довольно примитивных функций, упрощающих работу со строками, и единственной своей целью имеет сократить количество копипаста в коде.

Кроме того, библиотека рассчитана на работу с русским языком: транслит, читабельный размер файла и выбор подходящей словоформы для числа будут работать только с ним.

php-su не заведётся, если у вас нет:

  • PHP >= 5.3
  • mbstring

Возможности

su::startsWith($s, $p)

Проверить, начинается ли строка $s с подстроки $p.

Пример:

<?php
var_dump(su::startsWith('you spin me baby right round', 'you spin'));

Результат:

<?php
true

su::endsWith($s, $p)

Проверить, заканчивается ли строка $s подстрокой $p.

Пример:

<?php
var_dump(su::endsWith('you spin me baby right round', 'right'));

Результат:

<?php
false

su::glue($p, $s1, $s2 [, $start = false [, $end = false]])

Объединить две строки $s1 и $s2 в одну, используя соединительную строку $p. При этом результирующая строка на стыке $s1 и $s2 будет содержать ровно одну $p. Если необязательные аргументы $start и $end равны true, строка $p будет добавлена в начале и конце результирующей строки соответственно.

Метод удобен при создании путей.

Пример:

<?php
var_dump(su::glue('/', '/home/' '/m4', true, true));

Результат:

<?php
'/home/m4/'

su::shorten($s, $len)

Сократить строку до $len символов. Сокращение производится за счёт вырезания середины строки таким образом, чтобы длина конечной строки была равна или меньше $len. Левая и правая части строки объединяются строкой $separator, кроме того в местах объединения строк удаляются пробелы.

Пример:

<?php
var_dump(su::shorten('you spin me baby right round', 11));

Результат:

<?php
'you...ound'

su::ucfirst($s)

Привести первый символ строки к верхнему регистру.

Пример:

<?php
var_dump(su::ucfirst('тест'));

Результат:

<?php
'Тест'

su::lcfirst($s)

Привести первый символ строки к нижнему регистру.

Пример:

<?php
var_dump(su::lcfirst('Тест'));

Результат:

<?php
'тест'

su::ucwords($s)

Привести к верхнему регистру первый символ каждого слова в строке.

Пример:

<?php
var_dump(su::ucwords('тест тест тест'));

Результат:

<?php
'Тест Тест Тест'

su::lcwords($s)

Привести к нижнему регистру первый символ каждого слова в строке.

Пример:

<?php
var_dump(su::ucwords('Тест Тест Тест'));

Результат:

<?php
'тест тест тест'

su::cutOnSpace($s, $len [, $append = '...'])

Обрезать строку по ближайшему справа от позиции $len пробелу и добавить к концу результирующей строки $append. Если пробел не найден, будет выведена вся строка.

Пример:

<?php
var_dump(su::cutOnSpace('you spin me baby right round', 5));

Результат:

<?php
'you spin...'

su::caseForNumber($number, $cases)

Выбрать подходящую для числа $number словоформу из $cases. $cases имеет вид:

<?php
array(
  'штука',
  'штуки',
  'штук'
);

Пример:

<?php
var_dump(su::caseForNumber(15, array('штука', 'штуки', 'штук')));

Результат:

<?php
'штук'

su::translit($s)

Транслитерировать строку.

Пример:

<?php
var_dump(su::translit('циско'));

Результат:

<?php
'tsisko'

su::fileSize($size)

Получить размер файла с единицами измерения. Если размер дробный, он округляется до первого разряда после запятой.

Пример:

<?php
var_dump(su::fileSize(6667666));

Результат:

<?php
'6.4 МБ'

su::fileName($s)

Получить web-safe имя файла. Во-первых исходное имя файла будет транслитерировано, во-вторых все пробелы будут заменены на дефис, в-третьих все символы, не входящие в набор a-z0-9._- будут удалены.

Пример:

<?php
var_dump(su::fileName('Милые котики!.jpg'));

Результат:

<?php
'Milie-kotiki.jpg'

su::drutaion($interval)

Получить человекопонятное представление интервала в секундах. Представление может быть в двух видах - полном (1 час 3 минуты 5 секунд) или сокращённом (1ч 3м 5с). По умолчанию используется первый вариант.

Пример:

<?php
var_dump(su::duration(3785));

Результат:

<?php
'1 час 3 минуты 5 секунд'

su::isUrl($s)

Проверить, является ли строка URL. Допустимы следующие шаблоны:

  • scheme:https://host/path
  • scheme:https://host/
  • scheme:https://host
  • host/path
  • host/
  • host При этом scheme может состоять только из латиницы и цифр, host может состоять из произвольных букв, цифр и некоторых спецсимволов (.-), а path может содержать любые символы, кроме пробела.

Пример:

<?php
var_dump(su::isUrl('яндекс.рф/я-люблю-кириллические-домены'));

Результат:

<?php
true

su::isEmail($s)

Проверить, является ли строка e-mail. Фактически проверяется только отсутствие пробелов в строке и наличие символа @ внутри строки.

Пример:

<?php
var_dump(su::isEmail('дима@кремль.рф'));

Результат:

<?php
true

su::isPhone($s [, $minLen = 7 [, $maxLen = 11]])

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

Пример:

<?php
var_dump(su::isPhone('+7(916)666-66-66'));

Результат:

<?php
true

su::normalizeUrl($s [, $scheme = 'http'])

Привести URL к стандартному виду. Перед изменением URL строка проверяется через su::isUrl и если проверка не пройдена, возвращается null. Если у исходного URL не указана схема, подставляется схема из аргумента $scheme.

Пример:

<?php
var_dump(su::normalizeUrl('яндекс.рф/я-люблю-кириллические-домены'));

Результат:

<?php
'https://яндекс.рф/я-люблю-кириллические-домены'

su::beautifyUrl($s [, $len])

Привести URL к удобочитаемому виду. Перед изменением URL строка проверяется через su::isUrl и если проверка не пройдена, возвращается null. Во-первых, декодируются все последовательности %xx. Во-вторых, убирается схема, если она имелась в наличии. В-третьих, путь сокращается до $len символов (хост выводится в любом случае полностью).

Пример:

<?php
var_dump(su::beautify('https://habrahabr.ru/post/146262/'));

Результат:

<?php
'habrahabr.ru/pos...62/'

su::parseUrls($s [, $callback])

Обработать все URL в строке. По умолчанию все найденные ссылки превращаются в HTML-ссылки. Поведение по умолчанию применимо только для plain text'а, с HTML будут проблемы, т.к. никаких проверок на конструкции вида <a href="https://link/"> нет.

Пример:

<?php
var_dump(su::parseUrls('ya.ru/test@test. [email protected] test.ru'));

Результат:

<?php
'<a href="https://ya.ru/test@test">ya.ru/test@test</a>. [email protected] <a href="https://test.ru">test.ru</a>'

About

Some useful string functions for PHP.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages