Класс-обертка над встроенными строковыми функциями PHP
Данный класс позволяет выполнять некоторые операции со строками в объектно-ориентированном стиле.
<?php
namespace System;
// простая функция для создания экземпляра класса
function strs($php_string) {
return new Strings($php_string);
}
class Strings
{
private $string;
public function __construct( $string ) {
$this -> string = $string;
}
// проверяет, начинается ли строка с заданной подстроки
function startsWith( $prefix ) {
$prefix = str_replace('/','\/',$prefix);
return preg_match("/$prefix$/",$this -> string);
}
// проверяет, заканчивается ли строка заданной подстрокой
function endsWith( $suffix ) {
$suffix = str_replace('/','\/',$suffix);
return preg_match("/$suffix$/",$this -> string);
}
// вырезает из строки часть подстроки
function substr( $begin, $length ) {
return substr( $this -> string, $begin, $length );
}
// возвращает строку без префикса
function withoutPrefix( $string ) {
$this -> string = substr_replace( $this -> string, '', 0, strlen($string) );
return $this;
}
// возвращает строка без суффикса
function withoutSuffix( $string ) {
$this -> string = substr_replace( $this -> string, '', -strlen($string) );
return $this;
}
// замена в строке
function replace( $from, $to ) {
return str_replace( $from, $to, $this -> string );
}
function contains($str) {
$str = str_replace('/','\/',$str);
return preg_match("/$str/",$this -> string);
}
function str() {
return $this -> __toString();
}
function __toString() {
return $this -> string;
}
}
$str = strs('\\MySite\\Controllers\\ArticleController.php'); // Создаем экземпляр класса Strings
print $str -> withoutPrefix('\\MySite'); // \Controllers\ArticleController.php
print $str -> contains('.php') ? 'Есть' : 'Нет'; // Есть
print $str -> endsWith('.php') ? 'Есть' : 'Нет'; // Есть
-
- Михаил Русаков
Комментарии (1):
такие куски лучше сразу в gist https://gist.github.com/ildarkhasanshin/2965a90376a9caa413dc1d6e5e1dde29
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.