Класс \Joomla\String\StringHelper идёт на замену класса jString .

после

1.3.0

StringHelper

Класс обработки строк для передачи данных UTF-8 в библиотеке phputf8. Все функции предполагают действительность строк UTF-8.

Методы

compliant

Проверяет, соответствует ли строка стандарту UTF-8.

compliant(string $str) : boolean

Это будет намного быстрее, чем StringHelper::valid(), но будет пропускать пяти и шести байтовые последовательности UTF-8, которые не поддерживаются Юникодом и поэтому не могут корректно отображаться в браузере. Другими словами, он не такой строгий, как StringHelper::valid(), но он быстрее. Если вы используете его для проверки пользовательского ввода, вы подвергаете себя риску того, что злоумышленники смогут ввести последовательности размером 5 и 6 байт (что может представлять или не представлять значительный риск, в зависимости от того, что вы делаете).

смотри \Joomla\String\StringHelper::valid
link

https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php#54805

после

1.3.0

Что касается допустимости строки UTF-8 при использовании модификатора шаблона /u, некоторые вещи, о которых следует знать;

1. Если сам шаблон содержит недопустимый символ UTF-8, вы получите сообщение об ошибке (как указано в документах выше - "Правильность шаблона UTF-8 проверяется начиная с PHP 4.3.5"

2. Когда строка темы содержит недопустимые последовательности / кодовые точки UTF-8, это в основном приводит к "тихой смерти" для функций preg_*, где ничего не сопоставляется, но без указания того, что строка является недопустимой UTF-8

3. PCRE рассматривает последовательности символов UTF-8 с пятью и шестью октетами как допустимые (как в шаблонах, так и в строке темы), но они не поддерживаются в Юникоде ( см. раздел 5.9 "Кодировка символов" руководства "Безопасное программирование для Linux и Unix" - можно найти по адресу http://www.tldp.org/ и в других местах )

4. Для примера алгоритма в PHP, который проверяет правильность строки UTF-8 (и отбрасывает пять / шесть октетных последовательностей), перейдите к: http://hsivonen.iki.fi/php-utf8/

Следующий сценарий должен дать вам представление о том, что работает, а что нет;

 

$examples = array(
    'Допустимый ASCII' => "a",
    'Допустимая последовательность из 2 байтов' => "\xc3\xb1",
    'Недопустимая последовательность 2 байтов' => "\xc3\x28",
    'Недопустимый Идентификатор Последовательности' => "\xa0\xa1",
    'Допустимая последовательность из 3 байтов' => "\xe2\x82\xa1",
    'Недопустимая последовательность из 3 байтов (во 2-м байте)' => "\xe2\x28\xa1",
    'Недопустимая последовательность из 3 байтов (в 3-м байте)' => "\xe2\x82\x28",

    'Допустимая последовательность из 4 Октетов' => "\xf0\x90\x8c\xbc",
    'Недопустимая последовательность из 4 октетов (во 2-м байте)' => "\xf0\x28\x8c\xbc",
    'Недопустимая последовательность из 4 октетов (в 3-м байте)' => "\xf0\x90\x28\xbc",
    'Недопустимая последовательность из 4 октетов (в 4-м байте)' => "\xf0\x28\x8c\x28",
    'Допустимая последовательность из 5 байтов (но не Юникод!)' => "\xf8\xa1\xa1\xa1\xa1",
    'Допустимая последовательность из 6 байтов (но не Юникод!)' => "\xfc\xa1\xa1\xa1\xa1\xa1",
);

echo "++Недопустимый UTF-8 в шаблоне\n";
foreach ( $examples as $name => $str ) {
    echo "$name\n";
    preg_match("/".$str."/u",'Testing');
}

echo "++ preg_match() примеры\n";
foreach ( $examples as $name => $str ) {
   
    preg_match("/\xf8\xa1\xa1\xa1\xa1/u", $str, $ar);
    echo "$name: ";

    if ( count($ar) == 0 ) {
        echo "Ни с чем не совпало!\n";
    } else {
        echo "Соответствие {$ar[0]}\n";
    }
   
}

echo "++ preg_match_all() примеры\n";
foreach ( $examples as $name => $str ) {
    preg_match_all('/./u', $str, $ar);
    echo "$name: ";
   
    $num_utf8_chars = count($ar[0]);
    if ( $num_utf8_chars == 0 ) {
        echo "Ни с чем не совпало!\n";
    } else {
        echo "Соответствует символу $num_utf8_chars\n";
    }
   
}

 

 

increment

Увеличивает конечное число в строке.

increment(string $string, string $style = 'default', integer $n) : string

Используется для легкого создания отдельных меток при копировании объектов. Метод имеет следующие стили:

default: "Label" becomes "Label (2)" dash: "Label" becomes "Label-2"

после

1.3.0

Аргументы

$string

stringИсходная строка.

$style

string Стиль (по умолчанию|dash).

$n

integer Если указано, этот номер используется для копии, в противном случае это "следующий" номер.

Ответ

string Увеличенная строка.

is_ascii

Проверяет, содержит ли строка только 7-битные байты ASCII.

is_ascii(string $str) : boolean

Вы можете использовать это, чтобы условно проверить, нуждается ли строка в обработке как UTF-8 или нет, потенциально предлагая преимущества в производительности за счет использования собственного эквивалента PHP, если это просто ASCII, например;

if (StringHelper::is_ascii($someString)) { 
	// It's just ASCII - use the native PHP version 
	$someString = strtolower($someString); 
} 
else { 
	$someString = StringHelper::strtolower($someString); 
}
после

1.3.0

Аргументы

$str

string Строка для проверки.

Ответ

boolean True, если строка состоит только из ASCII

ltrim

Замена с поддержкой UTF-8 для ltrim()

ltrim(string $str, string $charlist = false) : string

Удаляет пробелы (или другие символы) из начала строки. Вам нужно использовать это только в том случае, если вы предоставляете необязательный аргумент charlist и он содержит символы UTF-8. В противном случае ltrim будет нормально работать со строкой UTF-8.

link

https://www.php.net/ltrim

после

1.3.0

Аргументы

$str

string Строка, которую нужно обрезать

$charlist

string  Дополнительный список дополнительных символов для обрезки

Ответ

string Обрезанная строка

str_ireplace

Альтернатива с поддержкой UTF-8 для str_ireplace()

str_ireplace Регистронезависимый вариант функции str_replace()

str_replace Заменяет все вхождения строки поиска на строку замены

str_ireplace(string $search, string $replace, string $str, integer $count = null) : string

Версия str_replace() без учета регистра

link

https://www.php.net/str_ireplace

после

1.3.0

Аргументы

$search

string Строка для поиска

$replace

string Существующая строка для замены

$str

string Новая строка для замены на

$count

integer Необязательное значение счетчика, передаваемое по ссылке

Ответ

string Строка UTF-8

str_pad

Альтернатива с поддержкой UTF-8 для str_pad()

str_pad Дополняет строку другой строкой до заданной длины

str_pad(string $input, integer $length, string $padStr = ' ', integer $type = STR_PAD_RIGHT) : string

Дополнить строку определенной длины другой строкой. $padStr может содержать многобайтовые символы.

link

https://www.php.net/str_pad

после

1.4.0

Аргументы

$input

string Строка ввода.

$length

integer Если значение отрицательное, меньше или равно длине входной строки, заполнение не выполняется.

$padStr

string Строка может быть усечена, если количество заполняющих символов не может быть равномерно разделено на длину строки.

$type

integer Тип подкладки для применения

Ответ

string

str_split

Альтернатива с поддержкой UTF-8 для str_split()

str_split Преобразует строку в массив

str_split(string $str, integer $splitLen = 1) : array

Преобразует строку в массив.

link

https://www.php.net/str_split

после

1.3.0

Аргументы

$str

string Строка в кодировке UTF-8 для обработки

$splitLen

integer Число до символов для разделения строки на

Ответ

array

strcasecmp

UTF-8/ Альтернатива strcasecmp() с учетом языкового стандарта

strcasecmp Бинарно-безопасное сравнение строк без учёта регистра

strcoll Сравнение строк с учётом текущей локали

setlocale Устанавливает настройки локали

strcasecmp(string $str1, string $str2, mixed $locale = false) : integer

Сравнение строк без учета регистра.

link

https://www.php.net/strcasecmp

https://www.php.net/strcoll

https://www.php.net/setlocale

после

1.3.0

Аргументы

$str1

stringстрока 1 для сравнения

$str2

stringстрока 2 для сравнения

$locale

mixed Языковой стандарт, используемый strcoll или false для использования классического сравнения

Response

integer< 0, если str1 меньше str2; > 0, если str1 больше str2, и 0, если они равны.

strcmp

UTF-8/ Альтернатива strcmp() с учетом языкового стандарта

strcmp Бинарно-безопасное сравнение строк

strcoll Сравнение строк с учётом текущей локали

setlocale Устанавливает настройки локали

strcmp(string $str1, string $str2, mixed $locale = false) : integer

Сравнение строк с учетом регистра.

link

https://www.php.net/strcmp

https://www.php.net/strcoll

https://www.php.net/setlocale

после

1.3.0

Аргументы

$str1

stringстрока 1 для сравнения

$str2

stringстрока 2 для сравнения

$locale

mixedЯзыковой стандарт, используемый strcoll или false для использования классического сравнения

Response

integer< 0, если str1 меньше str2; > 0, если str1 больше str2, и 0, если они равны.

strcspn

Альтернатива с поддержкой UTF-8 для strcspn()

strcspn Возвращает длину участка в начале строки, не соответствующего маске

strcspn(string $str, string $mask, integer $start = null, integer $length = null) : integer

Найти длину начального сегмента, не соответствующего маске.

link

https://www.php.net/strcspn

после

1.3.0

Аргументы

$str

stringСтрока для обработки

$mask

stringМаска

$start

integerНеобязательная начальная позиция символа (в символах)

$length

integerДополнительная длина

Ответ

integerДлина начального сегмента str1, который не содержит ни одного из символов в str2

stristr

Альтернатива с поддержкой UTF-8 для stristr()

stristr Регистронезависимый вариант функции strstr()

strstr Находит первое вхождение подстроки

stristr(string $str, string $search) : string

Возвращает  подстроку исходной строки от первого появления цели до конца. Цель и исходная строка исследуются без учета регистра, чтобы найти первое вхождение строки с использованием сравнения без учета регистра.

link

https://www.php.net/stristr

после

1.3.0

Аргументы

$str

string Исходная строка

$search

string Цель

Ответ

string подстрока

strlen

UTF-8 альтернатива strlen()

strlen Возвращает длину строки

strlen(string $str) : integer

Возвращает количество символов в строке (не количество байтов).

link

https://www.php.net/strlen

после

1.3.0

Аргументы

$str

stringUtf-8 строка.

Ответ

integerКоличество символов UTF-8 в строке.

strpos

UTF-8 альтернатива strpos()

strpos Возвращает позицию первого вхождения подстроки

strpos(string $str, string $search, integer $offset = false) : integer|boolean

Ищет позицию первого вхождения строки.

link

https://www.php.net/strpos

после

1.3.0

Аргументы

$str

stringИсследуемая строка

$search

stringСтрока, которую ищут

$offset

integerНеобязательно, указывает позицию, с которой должен выполняться поиск

Ответ

integer|booleanКоличество символов до первого совпадения или FALSE при сбое

strrev

Альтернатива с поддержкой UTF-8 для strrev()

strrev Переворачивает строку задом наперёд

strrev(string $str) : string

Перевернуть строку.

link

https://www.php.net/strrev

после

1.3.0

Аргументы

$str

stringСтрока, подлежащая реверсированию

Ответ

stringСтрока в обратном порядке символов

strrpos

Альтернатива strrpos() с поддержкой UTF-8

strrpos Возвращает позицию последнего вхождения подстроки в строке

strrpos(string $str, string $search, integer $offset) : integer|boolean

Находит позицию последнего вхождения строки.

link

https://www.php.net/strrpos

после

1.3.0

Аргументы

$str

stringИсследуемая струна.

$search

stringСтрока, которую ищут.

$offset

integerСмещение слева от строки.

Ответ

integer|booleanКоличество символов до последнего совпадения или false при сбое

strspn

Альтернатива с поддержкой UTF-8 для strspn()

strspn Возвращает длину участка в начале строки, полностью соответствующего маске

strspn(string $str, string $mask, integer $start = null, integer $length = null) : integer

Найти длину маски соответствия начального сегмента.

link

https://www.php.net/strspn

после

1.3.0

Аргументы

$str

string Исходная строка

$mask

string Маска

$start

integer Опционально, начальная позиция поиска.

$length

integer Длина поиска опционально

Ответ

integer

strtolower

Альтернатива с поддержкой UTF-8 для strtolower()

strtolower Преобразует строку в нижний регистр

strtolower(string $str) : string|boolean

Переводит строку в нижний регистр.

Примечание: Понятие "регистр символов" существует только в некоторых алфавитах, таких как латинский, греческий, кириллица, армянский и архаичный грузинский - его нет, например, в китайском алфавите. См. Стандартное приложение Юникода № 21: Сопоставления регистров

link

https://www.php.net/strtolower

после

1.3.0

Аргументы

$str

string Обрабатываемая строка

Ответ

string|boolean Строка в нижнем регистре или FALSE недопустима в формате UTF-8

strtoupper

Альтернатива strtoupper() с поддержкой UTF-8

strtoupper(string $str) : string|boolean

Переводит строку в верхний регистр

Примечание: Понятие "регистр символов" существует только в некоторых алфавитах, таких как латинский, греческий, кириллица, армянский и архаичный грузинский - его нет, например, в китайском алфавите. См. Стандартное приложение Юникода № 21: Сопоставления регистров

link

https://www.php.net/strtoupper

после

1.3.0

Аргументы

$str

stringОбрабатываемая строка

Ответ

string|booleanССтрока в верхнем регистре или FALSE  если является недопустимым в формате UTF-8

substr

Альтернатива с поддержкой UTF-8 для substr()

substr Возвращает подстроку

substr(string $str, integer $offset, integer $length = false) : string|boolean

Возвращает часть строки с заданным смещением символов (и, возможно, длиной).

link

https://www.php.net/substr

после

1.3.0

Аргументы

$str

string Обрабатываемая строка

$offset

integer Количество смещенных символов UTF-8 (слева)

$length

integer Необязательная длина в символах UTF-8 со смещением

Ответ

string|boolean

substr_replace

Альтернатива с поддержкой UTF-8 для substr_replace()

substr_replace(string $str, string $repl, integer $start, integer $length = null) : string

Замените текст в части строки.

link

https://www.php.net/substr_replace

после

1.3.0

Аргументы

$str

string Исходная строка

$repl

string Строка замены

$start

integer Начало

$length

integer Длина (необязательно)

Ответ

string

transcode

Перекодировать строку.

transcode(string $source, string $fromEncoding, string $toEncoding) : mixed
link

https://bugs.php.net/bug.php?id=48147

после

1.3.0

Аргументы

$source

stringСтрока для перекодирования.

$fromEncoding

stringИсходная кодировка.

$toEncoding

stringЦелевая кодировка.

Ответ

mixedТранскодированная строка или значение null, если источник не был строкой.

trim

Альтернатива с поддержкой UTF-8 для trim()

trim(string $str, string $charlist = false) : string

Удалить пробелы (или другие символы) из начала и конца строки. Вам нужно использовать это только в том случае, если вы предоставляете необязательный аргумент charlist и он содержит символы UTF-8. В противном случае обрезка будет нормально работать со строкой UTF-8

link

https://www.php.net/trim

после

1.3.0

Аргументы

$str

string Строка, которую нужно обрезать

$charlist

string Дополнительный список дополнительных символов для обрезки

Ответ

stringОбрезанная строка

ucfirst

Альтернатива ucfirst() с поддержкой UTF-8

ucfirst Преобразует первый символ строки в верхний регистр

ucfirst(string $str, string $delimiter = null, string $newDelimiter = null) : string

 

link https://www.php.net/ucfirst
после 1.3.0

 

Аргументы

$str

stringСтрока, подлежащая обработке

$delimiter

stringРазделитель слов (null означает, что строка не разделяется)

$newDelimiter

string Новый разделитель слов (значение null равно $delimiter )

Ответ

string Если $delimiter равен нулю, вернёт строку с первым символом в верхнем регистре (если применимо), в противном случае рассмотрит  строку слов, разделенных разделителем, применит ucfirst к каждому слову и вернёт  строку с новым разделителем

ucwords

Альтернатива ucwords() с поддержкой UTF-8

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

ucwords(string $str) : string

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

link

https://www.php.net/ucwords

начиная

1.3.0

Аргументы

$str

stringСтрока, подлежащая обработке

Ответ

stringСтрока с первым символом каждого слова в верхнем регистре

unicode_to_utf16

Преобразует последовательности Юникода в строку UTF-16.

unicode_to_utf16(string $str) : string
начиная

1.3.0

Аргументы

$str

stringСтрока Юникода для преобразования

Ответ

stringСтрока UTF-8

valid

Проверяет строку на то, является ли она допустимой в формате UTF-8 и поддерживается стандартом Unicode.

valid(string $str) : boolean

Примечание: эта функция была изменена, чтобы просто возвращать значение true или false.

автор

hsivonen@iki.fi

link

https://hsivonen.fi/php-utf8/

смотри \Joomla\String\compliant
начиная

1.3.0

Аргументы

$str

stringСтрока в кодировке UTF-8.

Ответ

booleantrue если верно

Свойства