Урок 7. Работа со строковыми функциями в PHP

Урок 7. Работа со строковыми функциями в PHP

Создание и раскрутка сайтов

Вбиваю в ТОП-10, как гвозди

8-965-148-98-02, diplom07@mail.ru

Создание и раскрутка сайтов

Вбиваю в ТОП-10, как гвозди

8-965-148-98-02, diplom07@mail.ru

Урок 7. Работа со строковыми функциями в PHP

Урок 7. Работа со строковыми функциями в PHP

www.homa.xp3.biz

Теория

Методы и функции: strtolower, strtoupper, ucfirst, lcfirst, ucwords, strlen, substr, str_replace, strtr, substr_replace, strpos, strrpos, strstr, explode, implode, str_split, trim, ltrim, rtrim, strrev, str_shuffle, number_format, str_repeat, htmlspecialchars, strip_tags, chr, ord, str_word_count, substr_count, count_chars, strchr, strrchr

Все функции работы с регистром: ucfirst, lcfirst, strtoupper, strtolower, ucwords.

Функция strtolower

Функция strtolower преобразовывает строку в нижний регистр.

Данная функция неправильно работает с кириллицей. Используйте функцию mb_strtolower (она работает аналогичным образом, но корректно обрабатывает кириллицу? НЕТ, ТОЖЕ НЕКОРРЕКТНО!).

Синтаксис: strtolower(строка).

Пример

В данном примере функция преобразовала строку в нижний регистр:

<?echo strtolower('ABC')?>

abc.

Пример

В данном примере функция преобразовала строку в нижний регистр:

<?echo mb_strtolower('НИЧЕГО СЕБЕ')?>

?????? ????.

НЕТ, ТОЖЕ НЕКОРРЕКТНО!

Это в UTF-8:

Это в cp1251:

Функция strtoupper

Функция strtoupper преобразовывает строку в верхний регистр.

Данная функция неправильно работает с кириллицей. Используйте функцию mb_strtoupper (она работает аналогичным образом, но корректно обрабатывает кириллицу).

Синтаксис: strtoupper(строка).

Пример

В данном примере функция преобразовала строку в верхний регистр:

<?echo strtoupper('abc')?>

ABC.

Функция ucfirst

Функция ucfirst преобразует 1-й символ строки в верхний регистр. Не работает с кириллицей.

Синтаксис: ucfirst(строка).

Пример

Переведем 1-й символ строки в верхний регистр:

<?echo ucfirst('hello')?>

Hello.

<?echo ucfirst('привет')?>

привет (не работает с кириллицей).

Функция lcfirst

Функция lcfirst (буква L маленькая англ. впереди от слова lower - вниз) преобразует 1-й символ строки в нижний регистр. Не работает с кириллицей.

Синтаксис: lcfirst(строка).

Пример

Переведем 1-й символ строки в нижний регистр:

<?echo lcfirst('Hello')?>

hello.

<?echo lcfirst('Привет')?>

Привет (не работает с кириллицей).

Функция ucwords

Функция ucwords преобразует 1-й символ каждого слова в строке в верхний регистр. Не работает с кириллицей.

Синтаксис: ucwords(строка).

Пример

1-й символ каждого слова в строке преобразуется в верхний регистр:

<?echo ucwords('hello world')?>

Hello World.

<?echo ucwords('привет мир')?>

привет мир (не работает с кириллицей).

Функция strlen

Функция strlen возвращает длину строки (количество символов в строке).

Данная функция неправильно работает с кириллицей(?). Используйте функцию mb_strlen (она работает аналогичным образом, но корректно обрабатывает кириллицу. Проверено на php5: все работает корректно и одинаково и с функцией strlen, и с функцией mb_strlen).

Синтаксис: strlen(строка).

Пример

Функция вернет длину строки 'hello':

<?echo strlen('hello')?>

5.

<?echo strlen('привет')?>

6 (работает).

<?echo strlen('Попробуем подлиннее предложение на кириллице и england + 4856')?>

61 (работает).

<?echo mb_strlen('Попробуем функцию 2 mb_strlen на кириллице')?>

22 (работает).

Функция substr

Функция substr вырезает и возвращает подстроку из строки.

Сама строка при этом не изменяется. Нумерация символов строки начинается с 0.

2-й параметр может быть отрицательным, в этом случае отсчет начнется с конца строки, при этом последний символ будет иметь номер -1.

Последний параметр можно не указывать, в этом случае отрезание произойдет до конца строки.

Данная функция неправильно работает с кириллицей(?). Используйте функцию mb_substr (она работает аналогичным образом, но корректно обрабатывает кириллицу). Проверено на php5: все работает корректно и одинаково и с функцией strlen, и с функцией mb_substr).

Синтаксис: substr(строка,откуда,[сколько]).

Пример

Вырезать 3 символа из строки позиции 1 (со 2-го символа, так как 1-й имеет номер 0):

<?echo substr('abcdef',1,3)?>

bcd.

<?echo substr('природа',1,3)?>

рир.

<?echo mb_substr('природа',1,3)?>

рода.

Пример

Вырезать все символы до конца строки, начиная со 2-го (он имеет номер 1):

<?echo substr('abcdef',1)?>

bcdef.

<?echo substr('природа',1)?>

рирода.

<?echo mb_substr('природа',1)?>

рода.

Пример

Вырезать 3-й и 2-й символы с конца, для этого укажем начало вырезания -3 (это номер 3-го символа с конца), а количество символов 2:

<?echo substr('abcdef',-3,2)?>

de.

<?echo substr('природа',-3,2)?>

од.

<?echo mb_substr('природа',-3,2)?>

природа.

Пример

Вырезать 2 последних символа, для этого укажем позицию предпоследнего символа (это -2), а 3-й параметр не укажем, в этом случае обрезание будет до конца строки:

<?echo substr('abcdef',-2)?>

ef.

<?echo substr('природа',-2)?>

да.

<?echo mb_substr('природа',-2)?>

природа.

Пример

Вырезать последний символ:

<?echo substr('abcdef',-1)?>

f.

<?echo substr('природа',-1)?>

а.

<?echo mb_substr('природа',-1)?>

рода.

Функция str_replace

Функция str_replace ищет в строке заданный текст и меняет его на другой.

1-м параметром функции принимает что меняем, а 2-м - на что меняем. Это могут быть 2 строки или 2 массива.

Во 2-м случае соответствующие элементы 1-го массива заменятся на соответствующие элементы 2-го массива.

Есть также функция str_ireplace, которая делает тоже самое, но без учета регистра.

Синтаксис: str_replace(что меняем,на что меняем,где меняем).

Пример

Функция заменит все найденные буквы 'a' на '!':

<?echo str_replace('a','!','abcabc')?>

!bc!bc.

Пример

Функция заменит 'a' на 1, 'b' на 2, 'c' на 3:

<?echo str_replace(['a','b','c'],[1,2,3],'abcabc')?>

123123.

Функция strtr

Функция strtr осуществляет поиск и замену символов в строке.

Синтаксис. Функция имеет 2 варианта работы.

В 1-м варианте функция принимает массив замен: ключами служит то, что мы меняем, а значениями - на что будем менять: strtr(где меняем,массив замен).

Во 2-м варианте функция 1 параметром принимает строку с символами, которые будут заменены, а другим параметром строку с символами, на которые будет производится замена. Соответствующие символы 1-й строки будут заменены на соответствующие символы 2-й строки: strtr(где меняем,что меняем,на что меняем).

Пример

Функция заменит символы 1 и 2 на 'a' и 'b' соответственно:

<?echo strtr('жжж111222',['ж'=>'ю','1'=>'a','2'=>'b'])?>

юююaaabbb.

Пример

Функция также заменит символы 1 и 2 на 'a' и 'b' соответственно:

<?echo strtr('ююю111222333','ю123','жabc')?>

жжжaaabbbccc.

Функция substr_replace

Функция substr_replace заменяет указанную часть строки на другую.

Эта функция вырезает указанную часть строки (параметрами указывается откуда начинать вырезание и сколько символов взять) и заменяет вырезанную часть на указанную строку.

Синтаксис: substr_replace(где меняем,на что меняем,с какого символа,[сколько символов]).

Если последний параметр не указан, замена произведется до конца строки.

Пример

Вырезать из строки символы (3 штуки) и вместо них вставить '!!!', начиная с 1-го (нумерация символов начинается с 0):

<?echo substr_replace('abcde','!!!',1,3)?>

a!!!e.

Пример

Начиная с 1-го (нумерация символов начинается с 0) до конца строки (так как последний параметр не указан) вырезать из строки символы и вместо них вставить '!!!':

<?echo substr_replace('abcde','!!!',1)?>

a!!!.

Функция strpos

Функция strpos возвращает позицию 1-го вхождения подстроки в другую строку. 1-м параметром функция принимает строку, в которой осуществляется поиск, 2-м параметром - подстроку, которую следует искать.

Результатом выполнения функции будет позиция 1-го символа найденной подстроки, а если такая подстрока не будет найдена - то false. Учтите, что нумерация идет с нуля и, если подстрока находится в начале строки, то результатом функции будет 0. Это может привести к ошибкам, если сделать, к примеру, так: if(strpos()) - в этом случае и 0, и false приведут к одинаковому результату, чего бы нам не хотелось.

По-умолчанию функция ищет с начала строки до 1-го совпадения. Начало поиска можно регулировать 3-м необязательным параметром (если он задан, то поиск начнется не с начала строки, а с указанного места).

Есть также функция stripos, которая делает тоже самое, но без учета регистра.

Синтаксис: strpos(где ищем,что ищем,[откуда искать]).

Пример

Функция вернет позицию 1-го символа 'с'. Он занимает позицию 2, так как отсчет начинается с 0:

<?echo strpos('abc abc','c')?>

2.

Пример

В данном примере задан 3-й параметр и поэтому поиск начнется с 3-ей позиции, в этом случае функция найдет уже 2-й символ 'c' и выведет его позицию 6:

<?echo strpos('abc abc','c',3)?>

6.

Пример

Проверим, что строка начинается на 'http:' (обратите внимание на сравнение по ===, а не по ==):

<?if(strpos('http://d.ru','http:')===0){echo'да';}else{echo'нет';}?>

да.

<?if(strpos('https://d.ru','http:')===0){echo'да';}else{echo'нет';}?>

нет.

Функция strrpos

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

Результатом выполнения функции будет позиция 1-го символа найденной подстроки, а если такая подстрока не будет найдена, то false (нумерация идет с 0 и, если подстрока находится в начале строки, то результатом функции будет 0). Это может привести к ошибкам, если сделать, к примеру, так: if(strpos()), в этом случае и 0, и false приведут к одинаковому результату, чего бы нам не хотелось.

По умолчанию функция ищет с начала строки до 1-го совпадения. Начало поиска можно регулировать 3-м необязательным параметром. Если он задан, то поиск начнется не с начала строки, а с указанного места.

Есть также функция strripos, которая делает тоже самое, но без учета регистра.

Синтаксис: strrpos(где ищем,что ищем,[откуда искать]).

Пример

В данном примере функция вернет позицию последнего вхождения символа 'а':

<?echo strrpos('abc abc','a')?>

4.

<?echo strrpos('abc abc','e')?>

.

Функция strstr

Функция strstr находит 1-е вхождение подстроки в строку и возвращает часть строки начиная этого места до конца строки. В отличие от strchr ищет вхождение подстроки из нескольких символов, а не вхождение 1 символа.

Есть также функция stristr, которая делает тоже самое, но без учета регистра.

Синтаксис: strstr(где ищем,что ищем).

Пример

В данном примере функция достанет адрес страницы без доменного имени из url (вернет подстроку, начиная с 1-го /, до конца строки)

<?echo strstr('d.ru/folder1/folder2/page.html','/')?>

/folder1/folder2/page.html.

Функция explode

Функция explode разбивает строку в массив по определенному разделителю.

Синтаксис: explode(разделитель,строка).

Пример

Разбить части даты в массив (разделитель - дефис):

<?$d='2025-12-31';$a=explode('-',$d);print_r($a)?>

Array ( [0] => 2025 [1] => 12 [2] => 31 ) .

Пример

Пусть дана дата в формате '2025-12-31'. Сделать из нее дату в формате '31.12.2025'. Для этого разобьем ее в массив через explode и сформируем новую строку в нужном нам формате:

<?$d='2025-12-31';$a=explode('-',$d);echo$a[2].'.'.$a[1].'.'.$a[0]?>

31.12.2025.

Функция implode

Функция implode сливает массив в строку с указанным разделителем.

Синтаксис: implode(разделитель,строка).

Пример

Слить массив ['a','b','c'] в строку 'a-b-c':

<?$a=['a','b','c'];$s=implode('-',$a);echo$s?>

a-b-c.

Функция str_split

Функция str_split разбивает строку в массив.

1-м параметром она принимает строку, а 2-м - количество символов в элементе массива.

К примеру, если 2-й параметр задать как 3 - функция разобьет строку в массив так, чтобы в каждом элементе массива было по 3 символа.

Синтаксис: str_split(строка,количество символов в элементе массива).

Пример

Разбить строку по 2 символа в элементе массива (обратите внимание на то, что последнему элементу не хватило символов и там их не 2, а 1):

<?$s='abcde';$a=str_split($s,2);print_r($a)?>

Array ( [0] => ab [1] => cd [2] => e ) .

Пример

Разбить строку по 3 символа в элементе массива:

<?$s='abcdefg';$a=str_split($s,3);print_r($a)?>

Array ( [0] => abc [1] => def [2] => g ) .

Пример

Найти сумму цифр числа. Для этого разобьем число в массив с помощью str_split и сложим элементы этого массива с помощью array_sum:

<?$n=12345;echo array_sum(str_split($n,1))?>

15.

Функция trim

Функция trim удаляет пробелы с начала и конца строки. Может также удалять другие символы, если их указать 2-м параметром.

Есть также функции ltrim и rtrim, которые делают то же самое, но ltrim только для левого края строки, а rtrim - для правого.

Синтаксис: trim(строка); trim(строка,символы).

Пример

Удалить пробелы по краям строки:

<?print_r(trim(' hello '))?>

hello.

Пример

Удалить слеши по краям строки:

<?echo trim('/hello/','/')?>

hello.

Пример

Удалить слеши и точки по краям строки:

<?echo trim('/hello.','/.')?>

hello.

Пример

Функция удаляет любое количество указанных символов, если они стоят с краю:

<?echo trim('../../hello...','/.')?>

hello.

Пример

Указать диапазон символов с помощью 2 точек '..'. К примеру, укажем, что мы хотим удалить символы от 'a' до 'i':

<?echo trim('hello.','a..i')?>

llo..

Функция ltrim

Функция ltrim удаляет пробелы с начала строки. Подробнее см. функцию trim.

Функция rtrim

Функция rtrim удаляет пробелы с конца строки. Подробнее см. функцию trim.

Функция strrev

Функция strrev переворачивает строку так, чтобы символы шли в обратном порядке.

Синтаксис: strrev(строка).

Пример

Функция перевернет строку '12345':

<?echo strrev('12345')?>

54321.

Функция str_shuffle

Функция str_shuffle переставляет символы в строке в случайном порядке.

См. также функцию shuffle, которая переставляет элементы массива в случайном порядке.

Синтаксис: str_shuffle(cтрока).

Пример

При каждом новом обновлении страницы строка будет иметь другой порядок символов:

<?echo str_shuffle('Hello world!')?>

rello dw!lHo.

Функция number_format

Функция number_format позволяет форматировать число.

В основном используется для того, чтобы отделять тройки чисел пробелами, к примеру, из 1234567 она может сделать 1 234 567.

По умолчанию функция разделяет тройки запятыми: из 1234567 делает 1,234,567.

Кроме того, она позволяет регулировать количество знаков после дробной части. Это количество задается 2-м необязательным параметром.

Например, можно из дроби 12345.6789 сделать дробь 12 345.68. Функция расставит пробелы между тройками и округлит дробь до 2 знаков в дробной части.

3-й необязательный параметр задает разделитель дробной части (по умолчанию точка, но можно сменить). Обязательно вместе с 3-м параметром должен быть и 4-й - он устанавливает разделитель троек чисел (по умолчанию запятая, но можно сменить, к примеру, на пробел).

Синтаксис: Функция принимает 1, 2 или 4 параметра (не 3).

number_format(число);

number_format(число, количество знаков дробной части);

number_format(число, количество знаков дробной части, разделитель дробной части, разделитель тысяч).

Пример

В данном примере тройки чисел отделяются запятой:

<?echo number_format(1234567)?>

1,234,567.

Пример

В данном примере тройки чисел отделяются запятой, а дробная часть округляется до 2 знаков:

<?echo number_format(1234.567,2)?>

1,234.57.

Пример

В данном примере тройки чисел отделяются пробелом, дробная часть округляется до 2 знаков, разделителем дробной части служит слеш /:

<?echo number_format(1234.567,2,'/',' ')?>

1 234/57.

Пример

В данном примере тройки чисел отделяются пробелом, дробная часть округляется до 2 знаков, разделителем дробной части служит точка:

<?echo number_format(1234.567,2,'.',' ')?>

1 234.57.

Функция str_repeat

Функция str_repeat повторяет строку заданное количество раз.

См. также функцию str_pad, которая дополняет строку до заданного размера другой строкой.

Синтаксис: str_repeat(строка,сколько раз повторить).

Пример

В данном примере функция повторила строку 'x' 5 раз:

<?echo str_repeat('x',5)?>

xxxxx.

Функция htmlspecialchars

Функция htmlspecialchars позволяет вывести теги в браузер так, чтобы он не считал их командами, а выводил как строки.

Функция преобразует амперсанд '&' в '& a m p ;', '<' в '& l t ;', '>' в '& g t ;'.

См. также функцию strip_tags, которая удаляет теги из строки.

См. также функцию htmlspecialchars_decode, которая выполняет преобразование, обратное функции htmlspecialchars.

Синтаксис: htmlspecialchars(строка).

Пример

Теги выведутся на экран, а не преобразуются в команды браузера:

<?echo htmlspecialchars('<b>жирный текст</b>')?>

.

Функция strip_tags

Функция strip_tags удаляет HTML-теги из строки (не трогая их содержимого). 2-м необязательным параметром можно указать разрешенные теги, они не будут удалены. Их указываем в таком формате: '<b>' или '<b><p>', если хотим оставить несколько тегов.

Синтаксис: strip_tags(строка,[разрешенные теги]).

Пример

Функция удалит HTML-теги из строки:

<?echo strip_tags('hello <b>world</b>')?>

hello world.

Функция chr

Функция chr находит символ по его ASCII коду.

Синтаксис: chr(код символа).

Пример

Выводится символ, который имеет код 97:

<?echo chr(97)?>

a.

Пример

Давайте выведем случайную маленькую букву латинского алфавита. Для этого посмотрим на таблицу ASCII и увидим, что маленькие латинские буквы имеют коды от 97 до 122. Поэтому сгенерируем случайное число в этом диапазоне с помощью mt_rand и результат возьмем в chr:

<?echo chr(mt_rand(97,122))?>

j.

Пример

Сформировать случайную строку из 6 маленьких латинских букв. Для этого описанную в предыдущем примере операцию повторим 6 раз в цикле:

<?$s='';for($i=1;$i<=6;$i++){$s.=chr(mt_rand(97,122));}echo$s?>

lxelet.

Пример

Большие латинские буквы имеют диапазон 65-90, а маленькие - 97-122. Т.е. между ними есть дыра. Давайте получим случайный символ маленькую или большую латинскую букву. Для этого с помощью range сформируем 2 массива: 1-й с числами от 65 до 90, а 2-й с числами от 97 до 122. Объединим их вместе с помощью array_merge и затем выведем случайный элемент этого массива с помощью array_rand:

<?$q=array_merge(range(65,90),range(97,122));echo chr($q[array_rand($q)])?>

z.

Функция ord

Функция ord возвращает ASCII код символа. Параметром принимает 1 символ или целую строку (в этом случае возвращает код ее 1-го символа).

Синтаксис: ord(символ или строка).

Пример

Давайте узнаем код символа 'W':

<?echo ord('W')?>

87.

Пример

Выведем код 1-го символа строки 'World':

<?echo ord('World')?>

87.

Функция str_word_count

Функция str_word_count подсчитывает количество слов в строке.

Функция может принимать 2-й необязательный параметр, число 1 или 2.

Если он не задан, то возвращается целое число, равное количеству слов.

Если передано 1, то возвращается массив, содержащий все слова, входящие в строку.

Если передано 2, то возвращается массив, ключами которого являются позиции в строке, а значениями - соответствующие слова.

Синтаксис: str_word_count(строка,[число]).

Пример

Считать количество слов в строке:

<?echo str_word_count('Hello my world')?>

3.

Функция substr_count

Функция substr_count подсчитывает сколько раз встречается подстрока в строке.

Синтаксис: substr_count(строка,подстрока).

Пример

Считать, сколько раз в нашей строке встречается подстрока 'test':

<?echo substr_count('test www test','test')?>

2.

Функция count_chars

Функция count_chars подсчитывает сколько раз встречаются различные символы в строке.

1-м параметром функция принимает строку, а 2-м необязательным параметром - модификатор, который изменяет работу функции:

0 - массив, индексами которого являются ASCII коды, а значениями - число вхождений соответствующего символа.

1 - то же, что и для 0, но информация о символах с нулевым числом вхождений не включается в массив.

2 - то же, что и для 0, но в массив включается информация только о символах с нулевым числом вхождений.

3 - строка, состоящая из символов, которые входят в исходную строку хотя бы раз.

4 - строка, состоящая из символов, которые не входят в исходную строку.

По умолчанию функция ведет себя так, будто 2-й параметр поставлен в 0.

Синтаксис: count_chars(строка,[модификатор]).

ПРОВЕРИТЬ!!!

<?echo count_chars('testwwwtest',2)?>

Array.

Функция strchr

Функция strchr находит 1-е вхождение подстроки в строку и возвращает часть строки начиная этого места до конца строки.

Синтаксис: strchr(где ищем,что ищем).

Если 2-й параметр состоит более чем из 1 символа, используется только 1-й символ.

Пример

Функция достанет адрес страницы без доменного имени из url (вернет подстроку, начиная с 1-го /, до конца строки).

<?echo strchr('d.ru/folder1/folder2/page.html','/')?>

/folder1/folder2/page.html.

Функция strrchr

Функция strrchr находит последнее вхождение символа в строку и возвращает часть строки начиная этого места до конца строки.

Синтаксис: strrchr(где ищем,что ищем).

Если 2-й параметр состоит более чем из 1 символа, используется только 1-й символ.

Пример

Функция достанет адрес страницы из url (вернет подстроку, начиная с последнего /, до конца строки).

<?echo strrchr('d.ru/folder1/folder2/page.html','/')?>

/page.html.

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович:
8-965-148-98-02, diplom07@mail.ru.
Печатать страницу: Урок 7. Работа со строковыми функциями в PHP

Урок 7, Работа со строковыми функциями в PHP, Урок, 7, Работа, со, строковыми, функциями, в, PHP, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, Создание сайтов, web-программирование, seo-продвижение, создание и раскрутка сайтов, вбиваю в топ-10, как гвозди, попробуйте бесплатно, Создание сайтов, web-программирование, seo-продвижение, Урок, 7, Работа, со, строковыми, функциями, в, PHP, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, создание, сайта, веб, заказ, web, дизайн, раскрутка, продвижение, новый, сайт, рейтинг, сео, seo, раскрутка сайтов, Вбиваю в ТОП-10, как гвозди, раскрутка сайтов, Делаю и раскручиваю сайты, Дмитрий Владимирович

×

Ваше письмо