Что такое код substr


Содержание

Функция substr

Функция substr используется для удаления части строки. Она имеет следующий формат:

$substring = substr(Str, Offset[,Len]);

Функция возвращает подстроку, т. е. часть строки, длина которой не превышает величины, заданной факультативным параметром Len . Возвращаемая подстрока строки str начинается с символа в позиции, заданной сдвигом Offset . Если пара­метр Len опущен, то возвращаемая строка содержит символы до конца строки включительно. Если параметр Offset отрицательный, то сдвиг вычисляется от кон­ца строки. Наконец, скрипт может использовать substr как lvalue для выполнения операции присваивания. Следующий фрагмент кода иллюстрирует использование функции substr .

print substr(‘orange’,3); # Выведет ‘nge’

print substr(‘orange’,-2); # Выведет ‘ge’

print substr(‘orange’,2,2); # Выведет ’an’

print $str; # Выведет ‘apricot’

Примечание: Часто использование операторов языка Perl для регулярных выражений оказывается более эффективным, чем функции substr . Регуляр­ные выражения обсуждаются ниже в данной главе.

Метод substr()

Определение

Метод substr() возвращает подстроку символов из строки вызова метода. Аргументами передается начальный индекс символа и количество считываемых символов.

Синтаксис

Описание

Метод substr() возвращает подстроку исходной строки, начальный индекс и длина которой указываются параметрами.

Метод substr() начинает извлекать символы начиная с позиции start и собирёт количество length символов, если он не достигнет раньше конца строки.

Если атрибут start больше либо равен длине строки, метод substr() вернёт пустую строку.

Если атрибут start – отрицательное число, позиция определяется начиная с конца строки.

Если атрибут start – отрицательное число и по модулю больше длины строки, метод substr() будет использовать в качестве начального индекса.

Если атрибут length равен нулю или отрицателен, метод substr() вернёт пустую строку. Если length не указан, substr извлечёт все символы до конца строки.

Возвращаемое значение

Копия фрагмента строки, начиная с символа, находящегося в позиции start (включительно); имеет длину, равную аргументу length, или заканчивается концом строки, если длина length не указана.

Что возвращает substring(0, 0)

Хотелось бы узнать: какую строку возвращает substring(0, 0) , если вызывающая строка состоит только из одного символа?

3 ответа 3

Вам вернется пустая строка. При чем не null , а просто new String(«») .

В таких случаях всегда открывайте документацию метода. И смотрите его исходный код и логику работы. Из исходников.

value это ссылка на массив символов которые хранит ваша строка

Метод substring(n, m) возвращает подстроку начиная с n индекса (включая) до m индекса (не включая). В нашем случае substring(0, 0) возвращает пустую строку, как при инициализации новой переменной: String s2 = «»;

Наглядно это можно продемонстрировать следующим кодом. При сравнении s2 и «» equals возвращает true.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками java или задайте свой вопрос.

Похожие

Подписаться на ленту

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.11.12.35412

Что такое код substr

(PHP 3, PHP 4, PHP 5)

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

Описание string substr ( string string, int start [, int length] )

substr() возвращает подстроку строки string длиной length , начинающегося с start символа по счету.

Если start неотрицателен, возвращаемая подстрока начинается в позиции start от начала строки, считая от нуля. Например, в строке ‘ abcdef ‘, в позиции 0 находится символ ‘ a ‘, в позиции 2 — символ ‘ c ‘, и т.д.

Пример 1. Пример использования substr()

= substr ( «abcdef» , 1 ); // возвращает «bcdef»
$rest = substr ( «abcdef» , 1 , 3 ); // возвращает «bcd»
$rest = substr ( «abcdef» , 0 , 4 ); // возвращает «abcd»
$rest = substr ( «abcdef» , 0 , 8 ); // возвращает «abcdef»


// к отдельным символам можно обращаться с помощью фигурных скобок
$string = ‘abcdef’ ;
echo $string < 0 >; // выводит a
echo $string < 3 >; // выводит d
?>

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

Пример 2. Использование отрицательного start

= substr ( «abcdef» , — 1 ); // возвращает «f»
$rest = substr ( «abcdef» , — 2 ); // возвращает «ef»
$rest = substr ( «abcdef» , — 3 , 1 ); // возвращает «d»
?>

Если length положительный, возвращаемая строка будет не длиннее length символов. Если длина строки string меньше или равна start символов, возвращается FALSE .

Если length отрицательный, то будет отброшено указанное этим аргументом число символов с конца строки string . Если при этом позиция начала подстроки, определяемая аргументом start , находится в отброшенной части строки, возвращается пустая строка.

Пример 3. Использование отрицательного length

SQL – Строковые функции

No. Описание функции
1 ASCII() Возвращает числовое значение левого символа
2 BIN() Возвращает строковое представление аргумента
3 BIT_LENGTH() Возвращает длину аргумента в битах
4 CHAR_LENGTH() Возвращает количество символов в аргументе
5 CHAR() Возвращает символ для каждого целого числа
6 CHARACTER_LENGTH() Синоним char_length()
7 CONCAT_WS() Возвращает объединение с сепаратором
8 CONCAT() Возвращает объединение строк
9 CONV() Преобразование числа между различными системами счисления
10 ELT() Возвращает строку под номером индекса
11 EXPORT_SET() Возвращает строку таким образом, что для каждого бита, установленного в значении бит, вы получаете строку и для каждого отключенного бита, вы не получите строку
12 FIELD() Возвращает индекс (позиция) первого аргумента в последующих аргументах
13 FIND_IN_SET() Возвращает индекс позиции первого аргумента во втором аргументе
14 FORMAT() Возвращает номер, отформатированный для указанного количества знаков после запятой
15 HEX() Возвращает строковое представление шестнадцатеричного
16 INSERT() Вставляет подстроку в указанной позиции до указанного числа символов
17 INSTR() Возвращает индекс первого вхождения подстроки
18 LCASE() Синоним LOWER()
19 LEFT() Возвращает крайний левый ряд символов, как указано
20 LENGTH() Возвращает длину строки в байтах
21 LOAD_FILE() Загружает файл с именем
22 LOCATE() Возвращает позицию первого вхождения подстроки
23 LOWER() Возвращает аргумент в нижнем регистре
24 LPAD() Возвращает строковый аргумент cлева с указанной строкой
25 LTrim() Удаляет начальные пробелы
26 MAKE_SET() Возвращает набор строк разделенных запятыми, которые имеют соответствующий бит
27 MID() Возвращает подстроку, начиная с заданной позиции
28 OCT() Возвращает строковое представление восьмеричного аргумента
29 OCTET_LENGTH() Синоним LENGTH()
30 ORD() Если крайний левый символ аргумента многобайтный символ, возвращает код для этого символа
31 POSITION() Синоним LOCATE()
32 QUOTE() Игнорирует аргумент для использования в операторе SQL
33 REGEXP Поиск по шаблону с использованием регулярных выражений
34 REPEAT() Повторяет строку указанное количество раз
35 REPLACE() Заменяет вхождения указанной строки
36 REVERSE() Меняет символы в строке
37 RIGHT() Возвращает указанный крайний правый ряд символов
38 Rpd() Добавляет строку в заданное число раз
39 RTRIM() Удаляет конечные пробелы
40 SOUNDEX() Возвращает строку SOUNDEX
41 SOUNDS LIKE Сравнивает звуки
42 SPACE() Возвращает строку из указанного количества пробелов
43 STRCMP() Сравнивает две строки
44 SUBSTRING_INDEX() Возвращает подстроку из строки до заданного числа появлений разделителя
45 SUBSTRING() , SUBSTR() Возвращает указанную подстроку
46 TRIM() Удаляет начальные и конечные пробелы
47 UCASE() Синоним UPPER()
48 Unheks() Преобразует каждую пару шестнадцатеричных цифр в символы
49 UPPER() Преобразует строку в верхний регистр

ASCII(строка)

Возвращает числовое значение первого символа строки. Возвращает 0, если строка пустая строка. Возвращает NULL, если строка является NULL. ASCII() работает для символов с числовыми значениями от 0 до 255.

Возвращает строковое представление двоичного значения N, где N представляет собой длинное целое (BIGINT) число. Это эквивалентно CONV (N, 10,2). Возвращает NULL, если N является NULL.

BIT_LENGTH(str)

Возвращает длину строки str в битах.

CHAR(N,… [USING charset_name])

CHAR() интерпретирует каждый аргумент N как целое число и возвращает строку, состоящую из символов, заданных кодовых значениями этих чисел. NULL значения пропускаются.

CHAR_LENGTH(str)

Возвращает длину строки str, измеренной в символах. Многобайтные символы считаются как один символ. Это означает, что для строки, содержащей пять символов два байта, LENGTH() возвращает 10, в то время как char_length() возвращает 5.

CHARACTER_LENGTH(str)

CHARACTER_LENGTH() является синонимом char_length() .

CONCAT (str1, str2, …)

Возвращает строку, которая является результатом конкатенации аргументов. Может иметь один или несколько аргументов. Если все аргументы не являются бинарными строками, результат не является бинарной строкой. Если аргументы включают в себя любые двоичные строки, результат является бинарной строкой. Числовой аргумент преобразуется в эквивалентную форму двоичной строки; если вы хотите избежать этого, вы можете использовать явное приведение типа, как в данном примере:

CONCAT_WS(separator,str1,str2,…)

CONCAT_WS() означает объединить с сепаратором и особую форму CONCAT(). Первый аргумент является разделителем для остальных аргументов. Разделитель добавляется между строками, которые объединяются. Сепаратор может быть строкой, как и остальные аргументы. Если разделитель равен NULL, то результат будет NULL.

CONV(N, N from_base, to_base)

Преобразование числа между различными системами счисления. Возвращает строковое представление числа N, преобразованное из базового from_base в to_base. Возвращает NULL, если любой параметр NULL. Аргумент N интерпретируется как целое, но может быть указан в виде целого числа или строки. Минимальная база 2, а максимальная база 36. Если to_base отрицательное число, N рассматривается как число со знаком. В противном случае, N трактуется как беззнаковое. CONV() работает с 64-битной точностью.

ELT(N, str1, str2, str3, …)

Возвращает str1, если N = 1, str2, если N = 2, и так далее. Возвращает NULL, если N меньше 1 или больше, чем число аргументов. ELT() является дополнением FIELD().

EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

Возвращает строку, что для каждого бита, установленного в значении бит, вы получаете на строку и для каждого бита не установлен в значении, вы не получите строку. Биты в битах рассматриваются справа налево (от низкого до бита высокого порядка). Строки добавляются к результату слева направо, отделены друг от друга разделительной полосой (по умолчанию является символ запятой. ). Число битов задается NUMBER_OF_BITS (по умолчанию 64).

FIELD(str,str1,str2,str3,…)

Возвращает индекс (положение, начиная с 1) str в str1, str2, str3, … список. Возвращает 0, если строка не найдена.

FIND_IN_SET(str, strlist)

Возвращает значение в диапазоне от 1 до N, если строка str находится в списке строки strlist, состоящем из N подстрок.

FORMAT(X,D)

Формат числа X, как «#, ###, ###. ##» с округлением до D знаков после запятой, и возвращает результат в виде строки. Если D равно 0, результат не имеет десятичной точки или дробной части.

HEX(N_OR_S)

Если N_OR_S это число, возвращает строковое представление шестнадцатеричного значения N, где N представляет собой длинное целое (BIGINT) число. Это эквивалентно CONV (N, 10,16).

Если N_OR_S является строкой, то возвращает шестнадцатеричное строковое представление N_OR_S, где каждый символ в N_OR_S преобразуется в две шестнадцатеричных цифры.

INSERT(str,pos,len,newstr)

Возвращает строку str с подстрокой, начиная с позиции pos и кол-во символов len заменяется строкой newstr. Возвращает исходную строку, если позиция не находится в пределах длины строки. Заменяет остальную часть строки от позиции, если len не находится в пределах длины остальной части строки. Возвращает NULL, если любой параметр NULL.

INSTR(str,substr)


Возвращает позицию первого вхождения подстроки substr в строке str. Это так же, как два-аргумента формы LOCATE(), за исключением того, что порядок аргументов обратный.

LCASE(str)

LCASE() является синонимом LOWER() .

LEFT(str,len)

Возвращает крайние левые len символов из строки str, или NULL, если какой-либо аргумент NULL.

LENGTH(str)

Возвращает длину строки str, измеренную в байтах. Многобайтное количество символов в нескольких байт. Это означает, что для строки, содержащей пять символов два байта, LENGTH() возвращает 10, в то время как char_length() возвращает 5.

LOAD_FILE(file_name)

Читает файл и возвращает содержимое файла в виде строки. Чтобы использовать эту функцию, файл должен быть расположен на хосте сервера, необходимо указать полный путь к файлу, и вы должны иметь привилегию FILE. Файл должен быть доступен для чтения всем и его размер меньше, чем max_allowed_packet байт.

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

По состоянию SQL 5.0.19, интерпретации переменных управления системой character_set_filesystem имен файлов, которые даны в виде текстовых строк.

LOCATE(substr,str), LOCATE(substr,str,pos)

Первый синтаксис возвращает позицию первого вхождения подстроки substr в строке str. Второй синтаксис возвращает позицию первого вхождения подстроки substr в строке str, начиная с позицией pos. Возвращает 0, если substr не в str.

LOWER(str)

Возвращает строку str, все символы переведены в нижний регистр в соответствии с текущим набором символов.

LPAD(str,len,padstr)

Возвращает строку str, слева дополняется строкой padstr до длины len символов. Если строка длиннее, чем длина, возвращаемое значение сокращаются до длины символов.

LTRIM(str)

Возвращает строку str, с удаленными пробелами.

MAKE_SET(bits,str1,str2,…)

Возвращает заданное значение (строку, содержащую подстроки, разделенные символом . ), состоящее из строк, имеющих соответствующий бит в наборе. str1 соответствует биту 0, str2 биту 1, и так далее. NULL значения в str1, str2, … не добавляется к результату.

MID(str,pos,len)

MID(str,pos,len) является синонимом SUBSTRING(str,pos,len).

Возвращает строковое представление восьмеричного значения N, где N представляет собой длинное целое (BIGINT) число. Это эквивалентно CONV (N, 10,8). Возвращает NULL, если N является NULL.

OCTET_LENGTH(str)

OCTET_LENGTH() является синонимом LENGTH() .

ORD(str)

Если крайний левый символ строки str многобайтный символ, то возвращает код для этого символа, вычисленного из числовых значений составляющих его байт, используя эту формулу:

Если крайний левый символ не является многобайтным символом а, Ord() возвращает то же значение, что и функция ASCII() .

POSITION(substr IN str)

POSITION(substr IN str) является синонимом LOCATE(substr,str).

QUOTE(str)

Котировки строки для получения результата, который может быть использован как правильно отображения значение данных в операторе SQL. Возвращается строка заключена в одинарные кавычки, и с каждым экземпляром одинарные кавычки ( «), обратной косой черты (» \ ‘), ASCII NUL и Control-Z предшествует обратный слэш. Если аргумент NULL, то возвращаемое значение слово «NULL» без ограждающих одиночных кавычек.

Примечание – Пожалуйста , проверьте , если ваша установка имеет какую – либо ошибку с этой функцией не используйте эту функцию.

expr REGEXP pattern

Эта функция выполняет соответствовать образцу выражение в отношении pattern. Возвращает 1, Если выражение соответствует pattern; в противном случае возвращает 0. Если какое-либо выражение или pattern имеет значение NULL, результатом будет NULL. Регулярное выражение не чувствительно к регистру, за исключением, когда используется с двоичными строками.

Давайте посмотрим еще один пример:

REPEAT(str,count)

Возвращает строку, состоящую из строки str неоднократное число раз. Если счетчик меньше 1, возвращает пустую строку. Возвращает NULL, если строка или количество является NULL.

REPLACE (str, from_str, to_str)

Возвращает строку str, в которой все вхождения строки from_str заменены строкой to_str. REPLACE() выполняет совпадение с учетом регистра при поиске from_str.

REVERSE(str)


Возвращает строку str с обратными порядком символов.

RIGHT(str,len)

Возвращает крайние правые символы len из строки str, или NULL, если какой-либо аргумент NULL.

RPAD(str,len,padstr)

Возвращает строку str, справа проложенный со строкой padstr до длины len символов. Если строка длиннее, чем длина, возвращаемое значение сокращаются до длины символов.

RTRIM(str)

Возвращает строку str, пробелы будут удалены.

SOUNDEX(str)

Возвращает строку из SOUNDEX str. Две строки, которые звучат почти так же, должны иметь идентичные строки SOUNDEX. Стандартная строка SOUNDEX длиной четыре символа, но функция SOUNDEX() возвращает произвольно длинную строку. Вы можете использовать SUBSTRING() на результате, чтобы получить стандартную строку SOUNDEX. Все не-алфавитные символы str игнорируются. Все международные алфавитные символы вне диапазона AZ обрабатываются как гласные.

expr1 SOUNDS LIKE expr2

Это то же самое, как SOUNDEX (Expr1) = SOUNDEX (expr2).

SPACE(N)

Возвращает строку, состоящую из символов пробела N.

STRCMP (str1, str2)

Сравнивает две строки и возвращает 0, если обе строки равны, и возвращается -1, если первый аргумент меньше второго согласно текущему порядку сортировки в противном случае она возвращает 1.

Давайте посмотрим еще один пример:

SUBSTRING(str,pos)

SUBSTRING(str FROM pos)

SUBSTRING(str,pos,len)

SUBSTRING(str FROM pos FOR len)

Формы без аргумента len возвращает подстроку из строки str, начиная с позиции pos. Формы с аргументом len возвращают подстроку len символов из строки str, начиная с позиции pos. Формы, которые используют FROM являются стандартным синтаксисом SQL. Кроме того, можно использовать отрицательное значение для pos. В этом случае, начало подстроки len символов от конца строки, а не c началf. Отрицательное значение может быть использовано для pos в любом из форм этой функции.

SUBSTRING_INDEX(str,delim,count)

Возвращает подстроку из строки str до количества вхождений разделителя DELIM. Если счетчик является положительным, все слева от последнего разделителя (считая слева) возвращаются. Если счетчик имеет отрицательное значение, все что справа от последнего разделителя (считая справа) возвращаются. SUBSTRING_INDEX() выполняет совпадение с учетом регистра при поиске DELIM.

TRIM([ [remstr] FROM] str)

TRIM([remstr FROM] str)

Возвращает строку str со все remstr префиксы или суффиксы удалены. Если ни один из спецификаторов BOTH, LEADING или TRAILING не заданы, предполагается, BOTH. remstr является необязательным и, если не указано, пробелы удаляются.

UCASE(str)

UCASE() является синонимом UPPER().

UNHEX(str)

Выполняет обратную операцию HEX(str). То есть, он интерпретирует каждую пару шестнадцатеричных цифр в аргументе как число и преобразует его в символ, представленный номер. Полученные символы возвращаются в виде бинарной строки.

Символы в строке аргумента должны быть шестнадцатеричные цифры: ‘0’ .. ‘9’, ‘A’ .. ‘F’, ‘а’ .. ‘е’. Если UNHEX() встречает любые не шестнадцатеричные цифры в аргументе, она возвращает NULL.

UPPER(str)

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как работает string-метод — substr(pos,n) ? Помогите найти ошибку!

Должно выдать в столбик два массива строк: str2[0] и str2[1].

А выдаёт str2[0] и потом всякие символы.

Как я понял косяк с исключениями:

15.07.2008, 16:47

Ошибка с substr(): «substr() expects parameter 1 to be string, array given»
Помогите, не могу понять что не так. Как сделать что-бы заработало? Вот часть кода: $rgrt_one =.

Метод Гаусса — помогите найти ошибку
function metodgayssCLOY(a, b) ab = ; oldab = ab; s = size(ab); s1 = ; .

Объясните как работает метод Any у String
Доброго времени суток. Ни как не могу понять как работает метод Any в классе String .Пытался читать.


15.07.2008, 16:52 2 15.07.2008, 16:54 [ТС] 3 15.07.2008, 16:56 4 15.07.2008, 17:08 [ТС] 5 15.07.2008, 17:23 6

#include «stdafx.h»
#include
#include
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
<
string str[2],str2[20];
int i,j,n=3,pos=0;
str[0]=»clkvj_jsgkjssdfgjjsfgksjkghjjk»;
str[1]=»jjjthhjguyuykiuouiophjpuiphioh»;
for(i=0;i 1

15.07.2008, 17:23
15.07.2008, 17:23

Помогите исправить ошибку: string не найден оператор
Когда хочу напечатать строку string то появляется ошибка что не найден оператор #include.

substr

(PHP 4, PHP 5, PHP 7)

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

Описание

Возвращает подстроку строки string , начинающейся с start символа по счету и длиной length символов.

Список параметров

Входная строка. Должна содержать хотя бы один символ.

Если start неотрицателен, возвращаемая подстрока начинается с позиции start от начала строки, считая от нуля. Например, в строке ‘abcdef‘, в позиции находится символ ‘a‘, в позиции 2 — символ ‘c‘, и т.д.

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

Если string меньше start символов, будет возвращено FALSE .

Пример #1 Использование отрицательного параметра start

Если length положительный, возвращаемая строка будет не длиннее length символов, начиная с параметра start (в зависимости от длины string ).

Если length отрицательный, то будет отброшено указанное этим аргументом число символов с конца строки string (после того как будет вычислена стартовая позиция, если start отрицателен). Если при этом позиция начала подстроки, определяемая аргументом start , находится в отброшенной части строки или за ней, возвращается FALSE .

Если указан параметр length и является одним из , FALSE или NULL , то будет возвращена пустая строка.

Если параметр length опущен, то будет возвращена подстрока, начинающаяся с позиции, указанной параметром start и длящейся до конца строки.

Пример #2 Использование отрицательного параметра length

Возвращаемые значения

Возвращает извлеченную часть параметра string ; или FALSE в случае возникновения ошибки или пустую строку.

Список изменений

Версия Описание
7.0.0 Если длина строки string равна количеству символов, указанному в start , то возвращается пустая строка. До этой версии в этом случае возвращалась FALSE .
5.2.2 — 5.2.6 Если параметр start указывает на позицию с отрицательной обрезкой, возвращается FALSE . Другие версии возвращают строку с начала.

Примеры

Пример #3 Базовое использование substr()

echo substr ( ‘abcdef’ , 1 ); // bcdef
echo substr ( ‘abcdef’ , 1 , 3 ); // bcd
echo substr ( ‘abcdef’ , 0 , 4 ); // abcd
echo substr ( ‘abcdef’ , 0 , 8 ); // abcdef
echo substr ( ‘abcdef’ , — 1 , 1 ); // f

// Получить доступ к отдельному символу в строке
// можно также с помощью квадратных скобок
$string = ‘abcdef’ ;
echo $string [ 0 ]; // a
echo $string [ 3 ]; // d
echo $string [ strlen ( $string )- 1 ]; // f

Пример #4 substr() и приведение типов

class apple <
public function __toString () <
return «green» ;
>
>

echo «1) » . var_export ( substr ( «pear» , 0 , 2 ), true ). PHP_EOL ;
echo «2) » . var_export ( substr ( 54321 , 0 , 2 ), true ). PHP_EOL ;
echo «3) » . var_export ( substr (new apple (), 0 , 2 ), true ). PHP_EOL ;
echo «4) » . var_export ( substr ( true , 0 , 1 ), true ). PHP_EOL ;
echo «5) » . var_export ( substr ( false , 0 , 1 ), true ). PHP_EOL ;
echo «6) » . var_export ( substr ( «» , 0 , 1 ), true ). PHP_EOL ;
echo «7) » . var_export ( substr ( 1.2e3 , 0 , 4 ), true ). PHP_EOL ;
?>

Результат выполнения данного примера в PHP 7:

Результат выполнения данного примера в PHP 5:

Ошибки

Возвращает FALSE в случае ошибки.

Смотрите также

  • strrchr() — Находит последнее вхождение символа в строке
  • substr_replace() — Заменяет часть строки
  • preg_match() — Выполняет проверку на соответствие регулярному выражению
  • trim() — Удаляет пробелы (или другие символы) из начала и конца строки
  • mb_substr() — Возвращает часть строки
  • wordwrap() — Переносит строку по указанному количеству символов
  • Посимвольный доступ и изменение строки


User Contributed Notes 35 notes

For getting a substring of UTF-8 characters, I highly recommend mb_substr

echo substr ( $utf8string , 0 , 5 );
// output cake#
echo mb_substr ( $utf8string , 0 , 5 , ‘UTF-8’ );
//output cakeæ
?>

may be by following functions will be easier to extract the needed sub parts from a string:

( ‘@’ , ‘biohazard@online.ge’ );
//returns ‘online.ge’
//from the first occurrence of ‘@’

before ( ‘@’ , ‘biohazard@online.ge’ );
//returns ‘biohazard’
//from the first occurrence of ‘@’

between ( ‘@’ , ‘.’ , ‘biohazard@online.ge’ );
//returns ‘online’
//from the first occurrence of ‘@’

after_last ( ‘[‘ , ‘sin[90]*cos[180]’ );
//returns ‘180]’
//from the last occurrence of ‘[‘

before_last ( ‘[‘ , ‘sin[90]*cos[180]’ );
//returns ‘sin[90]*cos[‘
//from the last occurrence of ‘[‘

between_last ( ‘[‘ , ‘]’ , ‘sin[90]*cos[180]’ );
//returns ‘180’
//from the last occurrence of ‘[‘
?>

here comes the source:

function after ( $this , $inthat )
<
if (! is_bool ( strpos ( $inthat , $this )))
return substr ( $inthat , strpos ( $inthat , $this )+ strlen ( $this ));
>;

function after_last ( $this , $inthat )
<
if (! is_bool ( strrevpos ( $inthat , $this )))
return substr ( $inthat , strrevpos ( $inthat , $this )+ strlen ( $this ));
>;

function before ( $this , $inthat )
<
return substr ( $inthat , 0 , strpos ( $inthat , $this ));
>;

function before_last ( $this , $inthat )
<
return substr ( $inthat , 0 , strrevpos ( $inthat , $this ));
>;

function between ( $this , $that , $inthat )
<
return before ( $that , after ( $this , $inthat ));
>;

function between_last ( $this , $that , $inthat )
<
return after_last ( $this , before_last ( $that , $inthat ));
>;

// use strrevpos function in case your php version does not include it
function strrevpos ( $instr , $needle )
<
$rev_pos = strpos ( strrev ( $instr ), strrev ( $needle ));
if ( $rev_pos === false ) return false ;
else return strlen ( $instr ) — $rev_pos — strlen ( $needle );
>;
?>

### SUB STRING BY WORD USING substr() and strpos() #####

### THIS SCRIPT WILL RETURN PART OF STRING WITHOUT WORD BREAK ###

$description = ‘your description here your description here your description here your description here your description here your description here your description hereyour description here your description here’ // your description here .

if( strlen ( $desctiption ) > 30 )
<
echo substr ( $description , 0 , strpos ( $description , ’ ‘ , 30 )); //strpos to find ‘ ‘ after 30 characters.
>
else <
echo $description ;
>

Be aware of a slight inconsistency between substr and mb_substr

mb_substr(«», 4); returns empty string

substr(«», 4); returns boolean false

tested in PHP 7.1.11 (Fedora 26) and PHP 5.4.16 (CentOS 7.4)

Just a little function to cut a string by the wanted amount. Works in both directions.

function cutString ( $str , $amount = 1 , $dir = «right» )
<
if(( $n = strlen ( $str )) > 0 )
<
if( $dir == «right» )
<
$start = 0 ;
$end = $n — $amount ;
> elseif( $dir == «left» ) <
$start = $amount ;
$end = $n ;
>

return substr ( $str , $start , $end );
> else return false ;
>
?>

Enjoy ;)

I created some functions for entity-safe splitting+lengthcounting:

function strlen_entities ( $text )
<
preg_match_all (
‘/((?:&(?:#[0-9]<2,>|[a-z]<2,>);)|(?:[^&])|’ .
‘(?:&(?!\w;)))s’ , $text , $textarray );
return count ( $textarray [ 0 ]);
>
function substr_entities ( $text , $start , $limit = 0 )
<
$return = » ;
preg_match_all (
‘/((?:&(?:#[0-9]<2,>|[a-z]<2,>);)|(?:[^&])|’ .
‘(?:&(?!\w;)))s’ , $text , $textarray );
$textarray = $textarray [ 0 ];
$numchars = count ( $textarray )- 1 ;
if ( $start >= $numchars )
return false ;
if ( $start 0 )
<
$start = ( $numchars )+ $start + 1 ;
>
if ( $start >= 0 )
<
if ( $limit == 0 )
<
$end = $numchars ;
>
elseif ( $limit > 0 )
<
$end = $start +( $limit — 1 );
>
else
<
$end = ( $numchars )+ $limit ;
>

for ( $i = $start ; $i $end ; $i ++)
<
$return .= $textarray [ $i ];
>
return $return ;
>
>
?>

Here we have gr8 function which simply convert ip address to a number using substr with negative offset.
You can need it if you want to compare some IP addresses converted to a numbers.
For example when using ip2country, or eliminating same range of ip addresses from your website :D

function ip2no ( $val )
<
list( $A , $B , $C , $D ) = explode ( «.» , $val );
return
substr ( «000» . $A ,- 3 ).
substr ( «000» . $B ,- 3 ).
substr ( «000» . $C ,- 3 ).
substr ( «000» . $D ,- 3 );
>

$min = ip2no ( «10.11.1.0» );
$max = ip2no ( «111.11.1.0» );
$visitor = ip2no ( «105.1.20.200» );

Coming to PHP from classic ASP I am used to the Left() and Right() functions built into ASP so I did a quick PHPversion. hope these help someone else making the switch

function left($str, $length) <
return substr($str, 0, $length);
>

function right($str, $length) <
return substr($str, -$length);
>

Well this is a script I wrote, what it does is chop up long words with malicious meaning into several parts. This way, a chat in a table will not get stretched anymore.

function text ( $string , $limit = 20 , $chop = 10 )<

$text = explode ( » » , $string );
while(list( $key , $value ) = each ( $text )) <
$length = strlen ( $value );
if( $length >= 20 ) <
for( $i = 0 ; $i $length ; $i += 10 ) <
$new .= substr ( $value , $i , 10 );
$new .= » » ;
>
$post .= $new ;
>
elseif( $length 15 ) <
$post .= $value ;
>
$post .= » » ;
>
return( $post );
>

// for example, this would return:
$output = text ( «Well this text doesn’t get cut up, yet thisssssssssssssssssssssssss one does.» , 10 , 5 );


echo( $output ); // «Well this text doesn’t get cup up, yet thiss sssss sssss sssss sssss sss one does.»
?>

I hope it was useful.. :)

You might expect substr(‘123456’, 6) to return an empty string. Instead it returns boolean FALSE.

This behavior should be mentioned in the Return Values section of the manual. Instead it is only mentioned in the Parameters section.

If you need an empty string instead of a boolean FALSE you should typecast the result to a string.

= substr ( ‘123456’ , 6 ); // equivalent to $a = FALSE
$a = (string) substr ( ‘123456’ , 6 ); // equivalent to $a = »;
?>

Hmm . this is a script I wrote, whitch is very similar to substr, but it isn’t takes html and bbcode for counting and it takes portion of string and show avoided (html & bbcode) tags too ;]
Specially usefull for show part of serach result included html and bbcode tags

/**
* string csubstr ( string string, int start [, int length] )
*
* @author FanFataL
* @param string string
* @param int start
* @param [int length]
* @return string
*/
function csubstr ( $string , $start , $length = false ) <
$pattern = ‘/(\[\w+[^\]]*?\]|\[\/\w+\]| ]*?>| )/i’ ;
$clean = preg_replace ( $pattern , chr ( 1 ), $string );
if(! $length )
$str = substr ( $clean , $start );
else <
$str = substr ( $clean , $start , $length );
$str = substr ( $clean , $start , $length + substr_count ( $str , chr ( 1 )));
>
$pattern = str_replace ( chr ( 1 ), ‘(.*?)’ , preg_quote ( $str ));
if( preg_match ( ‘/’ . $pattern . ‘/is’ , $string , $matched ))
return $matched [ 0 ];
return $string ;
>

?>

Using this is similar to simple substr.

If you want to have a string BETWEEN two strings, just use this function:

function get_between ( $input , $start , $end )
<
$substr = substr ( $input , strlen ( $start )+ strpos ( $input , $start ), ( strlen ( $input ) — strpos ( $input , $end ))*(- 1 ));
return $substr ;
>

$string = «123456789» ;
$a = «12» ;
$b = «9» ;

echo get_between ( $string , $a , $b );

I wanted to work out the fastest way to get the first few characters from a string, so I ran the following experiment to compare substr, direct string access and strstr:

/* substr access */
beginTimer ();
for ( $i = 0 ; $i 1500000 ; $i ++) <
$opening = substr ( $string , 0 , 11 );
if ( $opening == ‘Lorem ipsum’ ) <
true ;
>else <
false ;
>
>
$endtime1 = endTimer ();

/* strstr access */
beginTimer ();
for ( $i = 0 ; $i 1500000 ; $i ++) <
$opening = strstr ( $string , ‘Lorem ipsum’ );
if ( $opening == true ) <
true ;
>else <
false ;
>
>
$endtime3 = endTimer ();

echo $endtime1 . «\r\n» . $endtime2 . «\r\n» . $endtime3 ;
?>

The string was 6 paragraphs of Lorem Ipsum, and I was trying match the first two words. The experiment was run 3 times and averaged. The results were:

(substr) 3.24
(direct access) 11.49
(strstr) 4.96

(With standard deviations 0.01, 0.02 and 0.04)

THEREFORE substr is the fastest of the three methods for getting the first few letters of a string.

Add on to (a function originally written by) «Matias from Argentina»: str_format_number function.

Just added handling of $String shorter then $Format by adding a side to start the fill and a string length to the while loop.

function str_format_number ( $String , $Format , $Start = ‘left’ ) <
//If we want to fill from right to left incase string is shorter then format
if ( $Start == ‘right’ ) <
$String = strrev ( $String );
$Format = strrev ( $Format );
>
if( $Format == » ) return $String ;
if( $String == » ) return $String ;
$Result = » ;
$FormatPos = 0 ;
$StringPos = 0 ;
while (( strlen ( $Format ) — 1 ) >= $FormatPos && strlen ( $String ) > $StringPos ) <
//If its a number => stores it
if ( is_numeric ( substr ( $Format , $FormatPos , 1 ))) <
$Result .= substr ( $String , $StringPos , 1 );
$StringPos ++;
//If it is not a number => stores the caracter
> else <
$Result .= substr ( $Format , $FormatPos , 1 );
>
//Next caracter at the mask.
$FormatPos ++;
>
if ( $Start == ‘right’ ) $Result = strrev ( $Result );
return $Result ;
>
?>

Anyone coming from the Python world will be accustomed to making substrings by using a «slice index» on a string. The following function emulates basic Python string slice behavior. (A more elaborate version could be made to support array input as well as string, and the optional third «step» argument.)

function py_slice ( $input , $slice ) <
$arg = explode ( ‘:’ , $slice );
$start = intval ( $arg [ 0 ]);
if ( $start 0 ) <
$start += strlen ( $input );
>
if ( count ( $arg ) === 1 ) <
return substr ( $input , $start , 1 );
>
if ( trim ( $arg [ 1 ]) === » ) <
return substr ( $input , $start );
>
$end = intval ( $arg [ 1 ]);
if ( $end 0 ) <
$end += strlen ( $input );
>
return substr ( $input , $start , $end — $start );
>

print py_slice ( ‘abcdefg’ , ‘2’ ) . «\n» ;
print py_slice ( ‘abcdefg’ , ‘2:4’ ) . «\n» ;
print py_slice ( ‘abcdefg’ , ‘2:’ ) . «\n» ;
print py_slice ( ‘abcdefg’ , ‘:4’ ) . «\n» ;
print py_slice ( ‘abcdefg’ , ‘:-3’ ) . «\n» ;
print py_slice ( ‘abcdefg’ , ‘-3:’ ) . «\n» ;

?>

The $slice parameter can be a single character index, or a range separated by a colon. The start of the range is inclusive and the end is exclusive, which may be counterintuitive. (Eg, py_slice(‘abcdefg’, ‘2:4’) yields ‘cd’ not ‘cde’). A negative range value means to count from the end of the string instead of the beginning. Both the start and end of the range may be omitted; the start defaults to 0 and the end defaults to the total length of the input.

The output from the examples:
c
cd
cdefg
abcd
abcd
efg

To quickly trim an optional trailing slash off the end of a path name:

if (substr( $path, -1 ) == ‘/’) $path = substr( $path, 0, -1 );

When using a value of a wrong type as second parameter , substr() does not return FALSE but NULL although the docs say, it should return FALSE on error.

Prior to PHP 5.3, substr() tries to cast the second parameter to int and doesn’t throw any errors. Since PHP 5.3 a warning is thrown.

Using a 0 as the last parameter for substr().

As per examples
= substr ( $var , 4 ); ?>

works no problem. However
= substr ( $var , 4 , 0 ); ?>

will get you nothing. Just a quick heads up

[English]
I created python similar accesing list or string with php substr & strrev functions.

About of pattern structures
[start:stop:step]

Example,
= «fatihmertdogancan» ;
echo str ( $s , «1:9:-2» );
echo «
» ;
echo str ( $s , «1:-3:-2» );
echo «
» ;
echo str ( $s , «1:-11:-5» );
echo «
» ;
echo str ( $s , «1:9:4» );
?>

Output,
thetoacn
eht
aom
htan

function str ( $str , $pattern ) <
//[start:stop:step]
//pattern -> ([-]?[0-9]*|\s):([-]?[0-9]*|\s):([-]?[0-9]*|\s)
preg_match ( «/([-]?[0-9]*|\s?):([-]?[0-9]*|\s?):?([-]?[0-9]*|\s?)/» , $pattern , $yakala );
$start = $yakala [ 1 ];
$stop = $yakala [ 2 ];
$step = $yakala [ 3 ];

if(empty( $start ) && empty( $stop ) && $step == «-1» ) < //istisna durum
return strrev ( $str );
>else if(empty( $start ) && empty( $stop ) && isset( $step )) < //istisna durum
$rev = «» ;
$yeni = «» ;
if( $step [ 0 ] == «-» && $stop != «-1» )< $rev = "VAR" ;>
$atla = abs ( $step );
for( $i = 0 ; $i strlen ( $str ); $i ++) <
$offset = $i * $atla ;
if(isset( $str [ $offset ])) <
$yeni = $yeni . $str [ $offset ];
>
>
if( $rev != «VAR» ) <
return substr ( $yeni , 0 , strlen ( $str )- 1 );
//»hepsi boş, step dolu o da +»;
>else <
return strrev ( substr ( $yeni , 0 , strlen ( $str )- 1 ));
//»hepsi boş, step dolu o da -«;
>
>

if(empty( $start ) && empty( $stop ) && empty( $step )) <
return $str ;
//»hepsi boş»;
>else if(empty( $start )) <
if(isset( $stop ) && empty( $step )) <
$rev = «» ;
if( $stop [ 0 ] == «-» )< $rev = "VAR" ;>
if( $rev != «VAR» ) <
return substr ( $str , 0 , $stop );
//»start ve step boş, stop dolu»
>else <
return strrev ( substr ( $str , 0 , $stop ));
//»start ve step boş, stop -1″;
>
>else if(isset( $stop ) && isset( $step )) <
$rev = «» ;
if( $stop [ 0 ] == «-» )< $rev = "VAR" ;>
$yeni = «» ;
if( $step == 1 ) <
if( $rev != «VAR» ) <
return $str ;
//»start boş, stop ve step dolu, step 1″;
>else <
return strrev ( substr ( $str , 0 , abs ( $stop ))); //abs -> mutlak değer (-5 = 5)
//»start boş, stop -, step dolu, step 1″;
>
>else <
$atla = abs ( $step );
for( $i = 0 ; $i strlen ( $str ); $i ++) <
$offset = $i * $atla ;
if(isset( $str [ $offset ])) <
$yeni = $yeni . $str [ $offset ];
>
>
if( $rev != «VAR» ) <
return substr ( $yeni , 0 , $stop );
//»start boş, step ve stop dolu»;
>else <
return strrev ( substr ( $yeni , 0 , abs ( $stop )));
//»start boş, step ve stop -«;
>
>
>
//start boş değilse
>else if(!empty( $start )) <
if(isset( $stop ) && empty( $step )) <
$rev = «» ;
if( $stop [ 0 ] == «-» )< $rev = "VAR" ;>
if( $rev != «VAR» ) <
return substr ( $str , $start , $stop );
//return «step boş, start ve stop dolu»;
>else <
return strrev ( substr ( $str , 0 , abs ( $stop )));
//»step boş, start ve stop dolu, stop -«;
>
>else if(isset( $stop ) && isset( $step ))<

//hepsi dolu
$rev = «» ;
if( $stop [ 0 ] == «-» )< $rev = "VAR" ;>
$yeni = «» ;
if( $step == 1 ) <
if( $rev != «VAR» ) <
return substr ( $str , $start , $stop );
//»hepsi dolu, step 1″;
>else <
return substr ( $str , $start , abs ( $stop ));
//»hepsi dolu, step 1, stop -«;
>
>else <
if( $stop [ 0 ] == «-» )< $rev = "VAR" ;>
$atla = abs ( $step );
for( $i = 0 ; $i strlen ( $str ); $i ++) <
$offset = $i * $atla ;
if(isset( $str [ $offset ])) <
$yeni = $yeni . $str [ $offset ];
>
>
if( $rev != «VAR» ) <
return substr ( $yeni , $start , $stop );
//»hepsi dolu»;
>else <
return strrev ( substr ( $yeni , $start , abs ( $stop )));
//»hepsi dolu, stop -«;
>
>
>
>
>
?>

Good works..

If you need just a single character from the string you don’t need to use substr(), just use curly braces notation:

// both lines will output the 3rd character
echo substr ( $my_string , 2 , 1 );
echo $my_string < 2 >;
?>

curly braces syntax is faster and more readable IMHO..


Getting the first character of a string
substr($string, 1)

Getting the last character of a string
substr($string, -1)

Remove the first character of a string
substr($string,1)

Remove the last character of a string
substr($string, 0, -1)

I have developed a function with a similar outcome to jay’s

Checks if the last character is or isnt a space. (does it the normal way if it is)
It explodes the string into an array of seperate works, the effect is. it chops off anything after and including the last space.

function limit_string ( $string , $charlimit )
<
if( substr ( $string , $charlimit — 1 , 1 ) != ‘ ‘ )
<
$string = substr ( $string , ‘0’ , $charlimit );
$array = explode ( ‘ ‘ , $string );
array_pop ( $array );
$new_string = implode ( ‘ ‘ , $array );

return $new_string . ‘. ‘ ;
>
else
<
return substr ( $string , ‘0’ , $charlimit — 1 ). ‘. ‘ ;
>
>
?>

/**
* Returns and extracts the portion of string specified by the
* start and length parameters from the original string.
*
* This function is simulair to function substr() except that it
* removes the substring from the orignal string
* (passed by reference).
*
* @param string $string The input string.
* @param integer $start The start position (see substr() for
* explanation).
* @param integer $length The length (see substr()
* for explanation).
* @return mixed The substring or FALSE (see substr()
* for explanation).
**/
function substrex (& $string , $start , $length = PHP_INT_MAX )
<
if( $start > strlen ( $string )) < return false ; >
if(empty( $length )) < return '' ; >
if( $start 0 ) < $start = max ( 0 , $start + strlen ( $string )); >
$end = ( $length 0 ) ?
strlen ( $string ) + $length :
min ( strlen ( $string ), $start + $length );
if( $end $start ) < return false ; >
$length = $end — $start ;
$substr = substr ( $string , $start , $length );
$string = substr ( $string , 0 , $start ). substr ( $string , $end );
return $substr ;
>

Truncate a float number. Similar to the Excel trunc function.

function truncate_number ( $val , $decimals = 2 )<

$number =array();
$number = explode ( «.» , $val );
$result = 0 ;

if ( count ( $number )> 1 )<

$result = $number [ 0 ] . «.» . substr ( $number [ 1 ], 0 , $decimals );

echo truncate_number ( 99.123456 , 2 ); //result = 99.12
echo truncate_number ( 99.123456 , 5 ); //result = 99.12345
echo truncate_number ( 99.123456 , 1 ); //result = 99.1
?>

Regarding the utf8_substr function from lmak: The pattern ‘/./u’ doesn’t match newline characters. This means that the substring from 0 to the total length of the string will miss the number of characters in the end matching the number of newlines in the string. To fix this one can add the s modifier (PCRE_DOTALL) in the pattern:

function utf8_substr ( $str , $start )
<
preg_match_all ( «/./su» , $str , $ar );

if( func_num_args () >= 3 ) <
$end = func_get_arg ( 2 );
return join ( «» , array_slice ( $ar [ 0 ], $start , $end ));
> else <
return join ( «» , array_slice ( $ar [ 0 ], $start ));
>
>
?>

If you need to parse utf-8 strings char by char, try this one:

= chr ( 128 );
$count = 0 ;
while(isset( $string < $count >)) <
if( $string < $count >>= $utf8marker ) <
$parsechar = substr ( $string , $count , 2 );
$count += 2 ;
> else <
$parsechar = $string < $count >;
$count ++;
>
/* do what you like with parsechar . , eg.:*/ echo $parsechar . «
\r\n» ;
>
?>

— it works without mb_substr
— it is fast, because it grabs characters based on indexes when possible and avoids any count and split functions

I needed a function like lpad from oracle, or right from SQL
then I use this code :

function right ( $string , $chars )
<
$vright = substr ( $string , strlen ( $string )- $chars , $chars );
return $vright ;

echo right ( ‘0r0j4152’ , 4 );
?>

Result:
4152
————————————————
This function is really simple, I just wanted to share, maybe helps someone out there.

//removes string from the end of other

function removeFromEnd ( $string , $stringToRemove ) <
$stringToRemoveLen = strlen ( $stringToRemove );
$stringLen = strlen ( $string );

$pos = $stringLen — $stringToRemoveLen ;

$out = substr ( $string , 0 , $pos );

$string = ‘picture.jpg.jpg’ ;
$string = removeFromEnd ( $string , ‘.jpg’ );
?>

Shortens the filename and its expansion has seen.

function funclongwords ( $file )
<
if ( strlen ( $file ) > 30 )
<
$vartypesf = strrchr ( $file , «.» );
$vartypesf_len = strlen ( $vartypesf );
$word_l_w = substr ( $file , 0 , 15 );
$word_r_w = substr ( $file ,- 15 );
$word_r_a = substr ( $word_r_w , 0 ,- $vartypesf_len );

return $word_l_w . «. » . $word_r_a . $vartypesf ;
>
else
return $file ;
>
// RETURN: Hellothisfileha. andthisfayl.exe
?>

Drop extensions of a file (even from a file location string)

= «c:/some dir/abc defg. hi.jklmn» ;

echo substr ( $filename , 0 , ( strlen ( $filename )) — ( strlen ( strrchr ( $filename , ‘.’ ))));

?>

output: c:/some dir/abc defg. hi

Hope it may help somebody like me.. (^_^)

And as always there is bound to be a bug:

function strlen_entities ( $text )
<
preg_match_all (
‘/((?:&(?:#[0-9]<2,>|[a-z]<2,>);)|(?:[^&])|’ .
‘(?:&(?!\w;)))s’ , $text , $textarray );
return count ( $textarray [ 0 ]);
>
function substr_entities ( $text , $start , $limit = 0 )
<
$return = » ;
preg_match_all (
‘/((?:&(?:#[0-9]<2,>|[a-z]<2,>);)|(?:[^&])|’ .
‘(?:&(?!\w;)))s’ , $text , $textarray );
$textarray = $textarray [ 0 ];
$numchars = count ( $textarray )- 1 ;
if ( $start >= $numchars )
return false ;
if ( $start 0 )
<
$start = ( $numchars )+ $start + 1 ;
>
if ( $start >= 0 )
<
if ( $limit == 0 )
<
$end = $numchars ;
>
elseif ( $limit > 0 )
<
$end = $start +( $limit — 1 );
>
else
<
$end = ( $numchars )+ $limit ;
>

This returns the portion of str specified by the start and length parameters..
It can performs multi-byte safe on number of characters. like mb_strcut() .

Note:
1.Use it like this bite_str(string str, int start, int length [,byte of on string]);
2.First character’s position is 0. Second character position is 1, and so on.
3.$byte is one character length of your encoding, For example: utf-8 is «3», gb2312 and big5 is «2». you can use the function strlen() get it.
Enjoy it :) .

PS:I’m sorry my english is too poor. :(

// String intercept By Bleakwind
// utf-8:$byte=3 | gb2312:$byte=2 | big5:$byte=2
function bite_str ( $string , $start , $len , $byte = 3 )
<
$str = «» ;
$count = 0 ;
$str_len = strlen ( $string );
for ( $i = 0 ; $i $str_len ; $i ++) <
if (( $count + 1 — $start )> $len ) <
$str .= «. » ;
break;
> elseif (( ord ( substr ( $string , $i , 1 )) 128 ) && ( $count $start )) <
$count ++;
> elseif (( ord ( substr ( $string , $i , 1 )) > 128 ) && ( $count $start )) <
$count = $count + 2 ;
$i = $i + $byte — 1 ;
> elseif (( ord ( substr ( $string , $i , 1 )) 128 ) && ( $count >= $start )) <
$str .= substr ( $string , $i , 1 );
$count ++;
> elseif (( ord ( substr ( $string , $i , 1 )) > 128 ) && ( $count >= $start )) <
$str .= substr ( $string , $i , $byte );
$count = $count + 2 ;
$i = $i + $byte — 1 ;
>
>
return $str ;
>


// Test
$str = «123456���ֽ�123456�ַ���123456��ȡ����» ;
for( $i = 0 ; $i 30 ; $i ++) <
echo «
» . bite_str ( $str , $i , 20 );
>
?>

/**
* string substrpos(string $str, mixed $start [[, mixed $end], boolean $ignore_case])
*
* If $start is a string, substrpos will return the string from the position of the first occuring $start to $end
*
* If $end is a string, substrpos will return the string from $start to the position of the first occuring $end
*
* If the first character in (string) $start or (string) $end is ‘-‘, the last occuring string will be used.
*
* If $ignore_case is true, substrpos will not care about the case.
* If $ignore_case is false (or anything that is not (boolean) true, the function will be case sensitive.
* Both of the above: only applies if either $start or $end are strings.
*
* echo substrpos(‘This is a string with 0123456789 numbers in it.’, 5, ‘5’);
* // Prints ‘is a string with 01234’;
*
* echo substrpos(‘This is a string with 0123456789 numbers in it.’, ‘5’, 5);
* // Prints ‘56789’
*
* echo substrpos(‘This is a string with 0123456789 numbers in it and two strings.’, -60, ‘-string’)
* // Prints ‘s is a string with 0123456789 numbers in it and two ‘
*
* echo substrpos(‘This is a string with 0123456789 numbers in it and two strings.’, -60, ‘-STRING’, true)
* // Prints ‘s is a string with 0123456789 numbers in it and two ‘
*
* echo substrpos(‘This is a string with 0123456789 numbers in it and two strings.’, -60, ‘-STRING’, false)
* // Prints ‘s is a string with 0123456789 numbers in it and two strings.’
*
* Warnings:
* Since $start and $end both take either a string or an integer:
* If the character or string you are searching $str for is a number, pass it as a quoted string.
* If $end is (integer) 0, an empty string will be returned.
* Since this function takes negative strings (‘-search_string’):
* If the string your using in $start or $end is a ‘-‘ or begins with a ‘-‘ escape it with a ‘\’.
* This only applies to the *first* character of $start or $end.
*/

// Define stripos() if not defined (PHP if (! is_callable ( «stripos» )) <
function stripos ( $str , $needle , $offset = 0 ) <
return strpos ( strtolower ( $str ), strtolower ( $needle ), $offset );
>
>

function substrpos ( $str , $start , $end = false , $ignore_case = false ) <
// Use variable functions
if ( $ignore_case === true ) <
$strpos = ‘stripos’ ; // stripos() is included above in case it’s not defined (PHP > else <
$strpos = ‘strpos’ ;
>

// If end is false, set it to the length of $str
if ( $end === false ) <
$end = strlen ( $str );
>

// If $start is a string do what’s needed to make it an integer position for substr().
if ( is_string ( $start )) <
// If $start begins with ‘-‘ start processing until there’s no more matches and use the last one found.
if ( $start < 0 >== ‘-‘ ) <
// Strip off the ‘-‘
$start = substr ( $start , 1 );
$found = false ;
$pos = 0 ;
while(( $curr_pos = $strpos ( $str , $start , $pos )) !== false ) <
$found = true ;
$pos = $curr_pos + 1 ;
>
if ( $found === false ) <
$pos = false ;
> else <
$pos -= 1 ;
>
> else <
// If $start begins with ‘\-‘, strip off the ‘\’.
if ( $start < 0 >. $start < 1 >== ‘\-‘ ) <
$start = substr ( $start , 1 );
>
$pos = $strpos ( $str , $start );
>
$start = $pos !== false ? $pos : 0 ;
>

// Chop the string from $start to strlen($str).
$str = substr ( $str , $start );

// If $end is a string, do exactly what was done to $start, above.
if ( is_string ( $end )) <
if ( $end < 0 >== ‘-‘ ) <
$end = substr ( $end , 1 );
$found = false ;
$pos = 0 ;
while(( $curr_pos = strpos ( $str , $end , $pos )) !== false ) <
$found = true ;
$pos = $curr_pos + 1 ;
>
if ( $found === false ) <
$pos = false ;
> else <
$pos -= 1 ;
>
> else <
if ( $end < 0 >. $end < 1 >== ‘\-‘ ) <
$end = substr ( $end , 1 );
>
$pos = $strpos ( $str , $end );
>
$end = $pos !== false ? $pos : strlen ( $str );
>

// Since $str has already been chopped at $start, we can pass 0 as the new $start for substr()
return substr ( $str , 0 , $end );
>

Обрезаем количество символлов или как пользоваться условием subst.

Сегодня будет урок по условному оператору uCoz, а именно о функции substr.

substr — Возвращает подстроку из строки S, начиная с позиции N1 (первый символ имеет позицию 0), длиной N2 символов. Параметр S должен быть задан как строка (или как результат вызова функции, возвращающей строку). N1 и N2 приводятся к целым значениям. Если N2 не указан, то возвращается подстрока с позиции N1 до конца строки S. Если N1 отрицателен, то начальная позиция отсчитывается от конца строки S. Если N2 отрицателен, то задает конечную позицию от конца строки S.

В данном уроке я расскажу как, где и как лучше можно использовать функцию substr.

Начнем с такого примера, который использую лично я, и вы можете наблюдать данный пример в данном материале — где написано название материала. Как вы могли заметить, в названии материала очень много символов и они не могут поместится все в заголовок вида материалов, и поэтому после определенного количества символов стоит троеточие, а если бы не использовался данный метод, то вид материалов был бы испорчен большим количеством символов, и что бы решить данную проблему, нужно сделать вот так:

Для начала нужно определить сколько символов в $TITLE$, для этого мы воспользовались такой функцией как — len, она определяет сколько символов в заголовке, ну а после мы пользуемся функцией substr. Тут вы должны для себя решить сколько в вашем виде может поместится символов, в моем случае 65 символов, и поэтому если будет больше 65 символов, то название материала обрезается троеточием, а если меньше 65 символов, то название ничем не обрежется.

Теперь разжёвываю :

  • $TITLE$ — название материала.
  • — это с какого символа начать выводить $TITLE$
  • 65 — на каком символе закончить вывод $TITLE$

    Если Вам нужно вывести текст с пятого символа по 10, то нужно сделать так:
    Если вам нужно выводит текст просто с пятого символа и до конца, то нужно сделать так:

    Получение информации между определенных символов:

    p.s. Вообще я уже не мало делал материалов, где использовался данный метод, яркий пример например вот Новый формат вывода даты (на условных операторах) на uCoz или вот этот Время в профиле прошедшее с последнего посещения сайта пользователем

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

    substring — substr в char c ++ без массива

    Как видно из названия, я пытаюсь преобразовать substr в символ. В конечном счете, я пытаюсь сказать, что с помощью substr используется заглавная или строчная буква. Мне дали подсказку, что лучший способ сделать это — использовать значения ascii. Это то, что у меня есть

    Я получаю эту ошибку здесь:

    Я понимаю, что это не работает, потому что substr выводит строку, а не символ, но я не понимаю, как получить эти значения ascii. У кого-нибудь есть какие-либо идеи?

    Решение

    Почему вы даже должны использовать substr? Ваш код в основном просто идет вниз по строке символ за символом. Для этого вы можете использовать [] или же at

    Также запомните ваш код char a = a.substr(i, 1); неправильно, потому что substr возвращает string и вы также изменяете a ,

    Другие решения

    Вместо использования substr, at или operator [] я бы предложил использовать диапазон, основанный на цикле:

    И вместо использования значения ASCII было бы лучше использовать функцию isupper:

    Блог только про Java

    Учимся программировать на Java с нуля

    Метод substring() Java + примеры кода

    Чтобы извлечь подстроку из символьной строки, достаточно вызвать метод substring(), у которого имеются две формы. Первая его форма такова:

    где параметр начальный_индекс обозначает позицию, с которой должна начинаться подстрока. Эта форма возвращает копию подстроки, которая начинается с позиции начальный_индекс и продолжается до завершения вызывающей строки.

    Вторая форма метода substring() позволяет указать как начальный, так и конечный индекс подстроки следующим образом:

    где параметр начальный_индекс обозначает позицию, с которой должна начинаться извлекаемая подстрока, а конечный_индекс — позицию, на которой должна оканчиваться извлекаемая подстрока.

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

    В следующем примере программы программы метод substring() используется для замены исходной символьной строке всех экземпляров одной подстроки другой подстрокой.

    Ниже приведен результат, выводимый данной программой:

    Илон Маск рекомендует:  Картинка в button
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL