Класс Str

Методы для работы со строками.

 

Str::isValid($value, $type, &$errorMessage)

  • Возвращает true, если проверяемое данное соответствует типу, заданному во втором аргументе.
  • $value — значение данного.
  • $type — тип, на соответствие которому производится проверка. Возможные значения: 'email', 'password', 'login', 'numeric', 'filename', 'phone'. К любому из типов через пробел можно добавить 'not-empty' или использовать этот тип в одиночку.
  • $errorMessage — сообщение о несоответствии типа.

Str::splitByMark($str, $mark, $searchFromEnd=null)

Расщепление строки по строке-метке.

  • Возвращает массив с двумя ключами:
    • [0] => часть до метки
    • [1] => часть после метки
    Если метка не найдена, возвращает false. Для сравнения, в этом случае php-функция explode($mark, $str) возвращает начальную строку ($str).
  • $str — строка.
  • $mark — строка-метка.
  • $searchFromEnd=true — искать метку, начиная с конца. По умолчанию поиск ведется с начала (слева направо).

Str::getStringBeforeMark($str, $mark, $searchFromEnd=null)

  • Возвращает часть строки $str, до строки-метки $mark. Если метка не найдена, возвращает false. Для сравнения, в этом случае php-функция explode($mark, $str) возвращает начальную строку ($str).
  • $str — строка.
  • $mark — строка-метка.
  • $searchFromEnd=true — искать метку, начиная с конца. По умолчанию поиск ведется с начала (слева направо).

Str::getStringAfterMark($str, $mark, $searchFromEnd=null)

  • Возвращает часть строки $str, после строки-метки $mark. Если метка не найдена, возвращает false. Для сравнения, в этом случае php-функция explode($mark, $str) возвращает начальную строку ($str).
  • $str — строка.
  • $mark — строка-метка.
  • $searchFromEnd=true — искать метку, начиная с конца. По умолчанию поиск ведется с начала (слева направо).

Пример

$filename = Str::getStringAfterMark($path, '/', true);
if (false === $filename)
    filename = $path;
$path | $filename —————————————————————————————— 'shop/images/logo.png' | 'logo.png' 'logo.png' | 'logo.png' 'shop/' | ''

Str::declineWords($prewords, $number, $afterwords, $options=[])

Склонение слов и фраз до и после целых чисел.

  • Возвращает комбинацию числа и просклонённых слов.

  • $prewords = [
        'Слово перед числами, окончивающимися цифрой 1',
        'Слово перед числами, окончивающимися цифрами: 2, 3, 4',
        'Слово перед числами, окончивающимися цифрами: 5, 6, 7, 8, 9, 0, 11, 12, 13, 14'

    ];

  • $number — целое число, с которым должны склоняться слова.

  • $afterwords = [
        'Слово после чисел, окончивающихся цифрой 1',
        'Слово после чисел, окончивающихся цифрами: 2, 3, 4',
        'Слово после чисел, окончивающихся цифрами: 5, 6, 7, 8, 9, 0, 11, 12, 13, 14'

    ];

    Пример:

    echo 'Я знаю ';
    echo Str::declineWords('', ['иностранный язык', 'иностранных языка', 'иностранных языков'], 5);
    # Выведет: "Я знаю 5 иностранных языков"

    Пример:

    echo Str::declineWords(
        ['найдена', 'найдены', 'найдено'],
        2,
        ['запись', 'записи', 'записей']
    );
    # Выведет: "найдены 2 записи"
  • $options — при подстановке в качестве аргумента массива ['no-number' => true], будет возвращена не комбинация числа и слов, а только слова.

    Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.

Str::genRandomString($numOfChars, $noO=null)

  • Возвращает строку, состоящую из случайной последовательности цифр и латинских букв в верхнем регистре.
  • $numOfChars — количество знаков.
  • $noO=true — исключить ноль и букву "O".

Str::transliterate($str)

Транслитерация строк — замена нелатинских букв на буквы латинского языка.

  • Возвращает строку, подвергнутую транслитерации.
  • $str — преобразуемая строка.

Str::sanitizeAlias($str, $transliterate=false)

Преобразование строк для использования в качестве алиасов в ЧПУ (человекопонятных URL). Строка переводится в нижний регистр. Если задан второй аргумент, производится транслитерация. Символы, не являющиеся буквами, цифрами или нижней чертой, преобразуются в дефис. Повторяющиеся дефисы заменяются на одинарный дефис.

  • Возвращает строку.
  • $str — преобразуемая строка.
  • $transliterate — производить транслитерацию.

Str::isInteger($var, $options=[])

  • Возвращает true, если $var является целым числом или строкой, состоящей из цифр.
  • $options — массив с опциями. Если опция только одна, то аргумент можно записывать как строку. Ниже приведены доп.опции:
    $options = [
        'zero', # Возвращает true и для числа 0 и строки '0'    
        'negative', # Возвращает true и для отрицательных чисел (например: -9 и '-9')  
    ];

    Для булевых опций можно применять короткую форму записи. Подробности см. в описании метода Arr::formatOptions(), который и применен внутри описываемого метода.

Смотрите также функцию isEmpty().

Str::formatNumber($number, $format=[], $oldMark=",.·'", $multiplier=1)

Этот метод используется для форматирования чисел, в том числе, перед этим уже форматированных. Он устанавливает новый символ для десятичного разделителя и новый символ для разделителя тысяч.

Если вам нужно просто отформатировать число float, проще воспользоваться функцией number_format($number, $decimals, $mark, $separator).

  • Возвращает отформатированную строку.
  • $number — форматируемое число (строка или число).
  • $format — массив с параметрами форматирования. Ниже приведены параметры по умолчанию:
    $format = [
        'decimals'=>0,   # Число знаков в десятичной части
        'mark'=>'.',     # Символ для отделения десятичной части
        'separator'=>'', # Символ для разделения тысяч
    ];
  • $oldMark — символ для отделения десятичной части во входных данных. Если заранее известно, какой десятичный знак или знаки применяются во входных данных, то их все лучше перечислить в одной строке (например: ',.'), иначе при возникновении любой неоднозначности, метод вернет первоначальное число $number без преобразования.

    Например, если преобразовывать число "-12,345.678" (в американской формате) к российскому формату, то даже без указания старого десятичного знака все ясно, и метод вернет: "-12 345,678". Метод также преобразует "12,345,678" в "12 345 678". Однако преобразовать число "12,345", не зная что означает запятая, уже будет будет нельзя.

  • $multiplier — множитель (используется для корректировки цен в большую или меньшую сторону).

Пример преобразования числа заданного в американском формате в российский формат цен

echo Str::formatNumber('-12,345.678', ['decimals'=>2, 'mark'=>',', 'separator'=>' '], '.'); 
# Выведет: -12 345,69

Str::normalizeShorthandBytes($str)

Некоторые PHP директивы (post_max_size and upload_max_filesize), измеряемые в байтах, могут иметь сокращеный вид с буквами: K (для килобайт), M (для мегабайт) и G (для гигабайт) на конце. Данный метод преобразует их в число байтов.

  • Возвращает целое число, соответствующее количеству байт.
  • $str — строка, состоящая из цифр или из цифр и с одной из букв K, M, G на конце.

Пример:

echo Str::normalizeShorthandBytes(
    ini_get('upload_max_filesize')
);