StringHelper - новый вариант класса для работы с текстом.
Класс \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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Исходная строка - $search
-
string
Цель
Ответ
string
подстрока
strlen
UTF-8 альтернатива strlen()
strlen — Возвращает длину строки
strlen(string $str) : integer
Возвращает количество символов в строке (не количество байтов).
link | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Utf-8 строка.
Ответ
integer
Количество символов UTF-8 в строке.
strpos
UTF-8 альтернатива strpos()
strpos — Возвращает позицию первого вхождения подстроки
strpos(string $str, string $search, integer $offset = false) : integer|boolean
Ищет позицию первого вхождения строки.
link | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Исследуемая строка - $search
-
string
Строка, которую ищут - $offset
-
integer
Необязательно, указывает позицию, с которой должен выполняться поиск
Ответ
integer|boolean
Количество символов до первого совпадения или FALSE при сбое
strrev
Альтернатива с поддержкой UTF-8 для strrev()
strrev — Переворачивает строку задом наперёд
strrev(string $str) : string
Перевернуть строку.
link | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Строка, подлежащая реверсированию
Ответ
string
Строка в обратном порядке символов
strrpos
Альтернатива strrpos() с поддержкой UTF-8
strrpos — Возвращает позицию последнего вхождения подстроки в строке
strrpos(string $str, string $search, integer $offset) : integer|boolean
Находит позицию последнего вхождения строки.
link | |
---|---|
после |
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 | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Исходная строка - $mask
-
string
Маска - $start
-
integer
Опционально, начальная позиция поиска. - $length
-
integer
Длина поиска опционально
Ответ
integer
strtolower
Альтернатива с поддержкой UTF-8 для strtolower()
strtolower — Преобразует строку в нижний регистр
strtolower(string $str) : string|boolean
Переводит строку в нижний регистр.
Примечание: Понятие "регистр символов" существует только в некоторых алфавитах, таких как латинский, греческий, кириллица, армянский и архаичный грузинский - его нет, например, в китайском алфавите. См. Стандартное приложение Юникода № 21: Сопоставления регистров
link | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Обрабатываемая строка
Ответ
string|boolean
Строка в нижнем регистре или FALSE недопустима в формате UTF-8
strtoupper
Альтернатива strtoupper() с поддержкой UTF-8
strtoupper(string $str) : string|boolean
Переводит строку в верхний регистр
Примечание: Понятие "регистр символов" существует только в некоторых алфавитах, таких как латинский, греческий, кириллица, армянский и архаичный грузинский - его нет, например, в китайском алфавите. См. Стандартное приложение Юникода № 21: Сопоставления регистров
link | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
после |
1.3.0 |
Аргументы
- $str
-
string
Исходная строка - $repl
-
string
Строка замены - $start
-
integer
Начало - $length
-
integer
Длина (необязательно)
Ответ
string
transcode
Перекодировать строку.
transcode(string $source, string $fromEncoding, string $toEncoding) : mixed
link | |
---|---|
после |
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 | |
---|---|
после |
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 | |
---|---|
начиная |
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.
автор | |
---|---|
link | |
смотри | \Joomla\String\compliant |
начиная |
1.3.0 |
Аргументы
- $str
-
string
Строка в кодировке UTF-8.
Ответ
boolean
true если верно
Свойства