2011-07-05 16:01:19 +03:00
|
|
|
|
<?php
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* @license Dual licensed under the MIT or GPL Version 2 licenses.
|
|
|
|
|
* @package NameCaseLib
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
2011-07-06 14:08:04 +03:00
|
|
|
|
* Класс содержит функции для работы со строками, которые используются в NCLNameCaseLib
|
|
|
|
|
*
|
|
|
|
|
* @author Андрей Чайка <bymer3@gmail.com>
|
2011-07-11 20:56:11 +03:00
|
|
|
|
* @version 0.4.1
|
2011-07-06 14:08:04 +03:00
|
|
|
|
* @package NameCaseLib
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
class NCLStr
|
|
|
|
|
{
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Кодировка, в котороя работает система
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
2011-07-05 16:01:19 +03:00
|
|
|
|
static $charset = 'utf-8';
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Получить подстроку из строки
|
|
|
|
|
* @param string $str строка
|
|
|
|
|
* @param int $start начало подстроки
|
|
|
|
|
* @param int $length длина подстроки
|
|
|
|
|
* @return int подстрока
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
static function substr($str, $start, $length=null)
|
|
|
|
|
{
|
|
|
|
|
return mb_substr($str, $start, $length, NCLStr::$charset);
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Поиск подстроки в строке
|
|
|
|
|
* @param string $haystack строка, в которой искать
|
|
|
|
|
* @param string $needle подстрока, которую нужно найти
|
|
|
|
|
* @param int $offset начало поиска
|
|
|
|
|
* @return int позиция подстроки в строке
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
static function strpos($haystack, $needle, $offset = 0)
|
|
|
|
|
{
|
|
|
|
|
return mb_strpos($haystack, $needle, $offset, NCLStr::$charset);
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Определение длины строки
|
|
|
|
|
* @param string $str строка
|
|
|
|
|
* @return int длина строки
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
static function strlen($str)
|
|
|
|
|
{
|
|
|
|
|
return mb_strlen($str, NCLStr::$charset);
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Переводит строку в нижний регистр
|
|
|
|
|
* @param string $str строка
|
|
|
|
|
* @return string строка в нижнем регистре
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
static function strtolower($str)
|
|
|
|
|
{
|
|
|
|
|
return mb_strtolower($str, NCLStr::$charset);
|
|
|
|
|
}
|
2011-07-06 14:08:04 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Переводит строку в верхний регистр
|
|
|
|
|
* @param string $str строка
|
|
|
|
|
* @return string строка в верхнем регистре
|
|
|
|
|
*/
|
2011-07-05 16:01:19 +03:00
|
|
|
|
static function strtoupper($str)
|
|
|
|
|
{
|
|
|
|
|
return mb_strtoupper($str, NCLStr::$charset);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
2011-07-06 14:08:04 +03:00
|
|
|
|
* Поиск подстроки в строке справа
|
|
|
|
|
* @param string $haystack строка, в которой искать
|
|
|
|
|
* @param string $needle подстрока, которую нужно найти
|
|
|
|
|
* @param int $offset начало поиска
|
|
|
|
|
* @return int позиция подстроки в строке
|
2011-07-05 16:01:19 +03:00
|
|
|
|
*/
|
|
|
|
|
static function strrpos($haystack, $needle, $offset=null)
|
|
|
|
|
{
|
|
|
|
|
return mb_strrpos($haystack, $needle, $offset, NCLStr::$charset);
|
|
|
|
|
}
|
2011-07-06 14:08:04 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Проверяет в нижнем ли регистре находится строка
|
|
|
|
|
* @param string $phrase строка
|
|
|
|
|
* @return bool в нижнем ли регистре строка
|
|
|
|
|
*/
|
2011-07-05 16:01:19 +03:00
|
|
|
|
static function isLowerCase($phrase)
|
|
|
|
|
{
|
|
|
|
|
return ($phrase == NCLStr::strtolower($phrase));
|
|
|
|
|
}
|
2011-07-05 20:22:03 +03:00
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Проверяет в верхнем ли регистре находится строка
|
|
|
|
|
* @param string $phrase строка
|
|
|
|
|
* @return bool в верхнем ли регистре строка
|
|
|
|
|
*/
|
2011-07-05 20:22:03 +03:00
|
|
|
|
static function isUpperCase($phrase)
|
|
|
|
|
{
|
|
|
|
|
return ($phrase == NCLStr::strtoupper($phrase));
|
|
|
|
|
}
|
2011-07-06 14:08:04 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Превращает строку в массив букв
|
|
|
|
|
* @param string $phrase строка
|
|
|
|
|
* @return array массив букв
|
|
|
|
|
*/
|
2011-07-05 16:01:19 +03:00
|
|
|
|
static function splitLetters($phrase)
|
|
|
|
|
{
|
|
|
|
|
$resultArr = array();
|
|
|
|
|
$stop = NCLStr::strlen($phrase);
|
|
|
|
|
for ($idx = 0; $idx < $stop; $idx++)
|
|
|
|
|
{
|
|
|
|
|
$resultArr[] = NCLStr::substr($phrase, $idx, 1);
|
|
|
|
|
}
|
|
|
|
|
return $resultArr;
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Соединяет массив букв в строку
|
|
|
|
|
* @param array $lettersArr массив букв
|
|
|
|
|
* @return string строка
|
|
|
|
|
*/
|
2011-07-05 20:22:03 +03:00
|
|
|
|
static function connectLetters($lettersArr)
|
|
|
|
|
{
|
|
|
|
|
return implode('', $lettersArr);
|
|
|
|
|
}
|
|
|
|
|
|
2011-07-06 14:08:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Разбивает строку на части использую шаблон
|
|
|
|
|
* @param string $pattern шаблон разбития
|
|
|
|
|
* @param string $string строка, которую нужно разбить
|
|
|
|
|
* @return array разбитый массив
|
|
|
|
|
*/
|
2011-07-05 16:01:19 +03:00
|
|
|
|
static function explode($pattern, $string)
|
|
|
|
|
{
|
|
|
|
|
return mb_split($pattern, $string);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
?>
|