Библиотека представляет собой собрание довольно примитивных функций, упрощающих работу со строками, и единственной своей целью имеет сократить количество копипаста в коде.
Кроме того, библиотека рассчитана на работу с русским языком: транслит, читабельный размер файла и выбор подходящей словоформы для числа будут работать только с ним.
php-su не заведётся, если у вас нет:
- PHP >= 5.3
- mbstring
Проверить, начинается ли строка $s с подстроки $p.
Пример:
<?php
var_dump(su::startsWith('you spin me baby right round', 'you spin'));
Результат:
<?php
true
Проверить, заканчивается ли строка $s подстрокой $p.
Пример:
<?php
var_dump(su::endsWith('you spin me baby right round', 'right'));
Результат:
<?php
false
Объединить две строки $s1 и $s2 в одну, используя соединительную строку $p. При этом результирующая строка на стыке $s1 и $s2 будет содержать ровно одну $p. Если необязательные аргументы $start и $end равны true, строка $p будет добавлена в начале и конце результирующей строки соответственно.
Метод удобен при создании путей.
Пример:
<?php
var_dump(su::glue('/', '/home/' '/m4', true, true));
Результат:
<?php
'/home/m4/'
Сократить строку до $len символов. Сокращение производится за счёт вырезания середины строки таким образом, чтобы длина конечной строки была равна или меньше $len. Левая и правая части строки объединяются строкой $separator, кроме того в местах объединения строк удаляются пробелы.
Пример:
<?php
var_dump(su::shorten('you spin me baby right round', 11));
Результат:
<?php
'you...ound'
Привести первый символ строки к верхнему регистру.
Пример:
<?php
var_dump(su::ucfirst('тест'));
Результат:
<?php
'Тест'
Привести первый символ строки к нижнему регистру.
Пример:
<?php
var_dump(su::lcfirst('Тест'));
Результат:
<?php
'тест'
Привести к верхнему регистру первый символ каждого слова в строке.
Пример:
<?php
var_dump(su::ucwords('тест тест тест'));
Результат:
<?php
'Тест Тест Тест'
Привести к нижнему регистру первый символ каждого слова в строке.
Пример:
<?php
var_dump(su::ucwords('Тест Тест Тест'));
Результат:
<?php
'тест тест тест'
Обрезать строку по ближайшему справа от позиции $len пробелу и добавить к концу результирующей строки $append. Если пробел не найден, будет выведена вся строка.
Пример:
<?php
var_dump(su::cutOnSpace('you spin me baby right round', 5));
Результат:
<?php
'you spin...'
Выбрать подходящую для числа $number словоформу из $cases. $cases имеет вид:
<?php
array(
'штука',
'штуки',
'штук'
);
Пример:
<?php
var_dump(su::caseForNumber(15, array('штука', 'штуки', 'штук')));
Результат:
<?php
'штук'
Транслитерировать строку.
Пример:
<?php
var_dump(su::translit('циско'));
Результат:
<?php
'tsisko'
Получить размер файла с единицами измерения. Если размер дробный, он округляется до первого разряда после запятой.
Пример:
<?php
var_dump(su::fileSize(6667666));
Результат:
<?php
'6.4 МБ'
Получить web-safe имя файла. Во-первых исходное имя файла будет транслитерировано, во-вторых все пробелы будут заменены на дефис, в-третьих все символы, не входящие в набор a-z0-9._- будут удалены.
Пример:
<?php
var_dump(su::fileName('Милые котики!.jpg'));
Результат:
<?php
'Milie-kotiki.jpg'
Получить человекопонятное представление интервала в секундах. Представление может быть в двух видах - полном (1 час 3 минуты 5 секунд) или сокращённом (1ч 3м 5с). По умолчанию используется первый вариант.
Пример:
<?php
var_dump(su::duration(3785));
Результат:
<?php
'1 час 3 минуты 5 секунд'
Проверить, является ли строка 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
Проверить, является ли строка e-mail. Фактически проверяется только отсутствие пробелов в строке и наличие символа @ внутри строки.
Пример:
<?php
var_dump(su::isEmail('дима@кремль.рф'));
Результат:
<?php
true
Проверить, является ли строка телефонным номером. Для проверки из строки удаляются пробелы, дефисы, плюсы и скобки и сравнивается длина полученной строки с предельными длинами, указанными в аргументах.
Пример:
<?php
var_dump(su::isPhone('+7(916)666-66-66'));
Результат:
<?php
true
Привести URL к стандартному виду. Перед изменением URL строка проверяется через su::isUrl и если проверка не пройдена, возвращается null. Если у исходного URL не указана схема, подставляется схема из аргумента $scheme.
Пример:
<?php
var_dump(su::normalizeUrl('яндекс.рф/я-люблю-кириллические-домены'));
Результат:
<?php
'https://яндекс.рф/я-люблю-кириллические-домены'
Привести URL к удобочитаемому виду. Перед изменением URL строка проверяется через su::isUrl и если проверка не пройдена, возвращается null. Во-первых, декодируются все последовательности %xx. Во-вторых, убирается схема, если она имелась в наличии. В-третьих, путь сокращается до $len символов (хост выводится в любом случае полностью).
Пример:
<?php
var_dump(su::beautify('https://habrahabr.ru/post/146262/'));
Результат:
<?php
'habrahabr.ru/pos...62/'
Обработать все 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>'