/
Программирование
/
Курс PHP
/

Извлечение символов из строки

PHP: Извлечение символов из строки

Иногда нужно получить один символ из строки. Например, если сайт знает имя и фамилию пользователя и нужно вывести их в сокращенном формате вида A. Ivanov. Для этого потребуется взять первую букву имени.

Извлечение символов из строки

В PHP для доступа к символам строки используют индексацию. Индексация означает, что у каждого символа в строке есть свой номер, то есть индекс. Индексация начинается с нуля: у первого символа индекс 0, у второго 1 и так далее. Представим, что у нас есть строка:

<?php

$firstName = 'Alexander';

Чтобы получить первую букву, указываем ее позицию (индекс) в квадратных скобках:

<?php

print_r($firstName[0]); // => A

Квадратные скобки с индексом внутри — это специальный оператор извлечения символа из строки. Индексы в PHP (и во многих языках) начинаются с нуля:

Символ	A	l	e	x	a	n	d	e	r
Индекс	0	1	2	3	4	5	6	7	8

Длина строки Alexander равна 9, поэтому индекс последнего символа равен 8, то есть 9 - 1.

Чтобы получить, например, последний символ, можно написать:

<?php

print_r($firstName[8]); // => r

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

А если выйти за границы строки, PHP сообщит о проблеме:

<?php

print_r($firstName[9]);
// Warning: Uninitialized string offset 9

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

Укороченное извлечение с конца

Для получения элементов с конца лучше пользоваться отрицательными индексами. В таком случае отсчет начинается с конца.

<?php

$firstName = 'Alexander';

print_r($firstName[-1]); // => r, последний символ
print_r($firstName[-2]); // => e, предпоследний символ
Строка:  'H' 'e' 'x' 'l' 'e' 't'
Индекс:   0   1   2   3   4   5
С конца: -6  -5  -4  -3  -2  -1

Отрицательные индексы работают так:

  • -1 соответствует последнему символу
  • -2 соответствует предпоследнему
  • и так далее

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

Индекс можно хранить в переменной:

<?php

$firstName = 'Alexander';
$index = 0;

print_r($firstName[$index]); // => A

Такой подход полезен, когда индекс вычисляется где-то в коде, а потом используется для доступа к нужному символу.

Спецсимволы

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

Например, в строке "\nyou" первый символ представляет собой \n (перенос строки), а под индексом 1 уже идет буква y. Поэтому обращение $magic[1] вернет именно y. Обратите внимание на двойные кавычки: в одинарных кавычках \n остался бы двумя отдельными символами — обратным слешем и буквой n.

Подумайте: что выведет этот код?

<?php

$magic = "\nyou";
print_r($magic[1]); // => ?

Вывод будет:

y

Задание

В переменной $text спрятано секретное слово. Извлеките нужные символы из переменной по индексам, соедините их и выведите на экран слово grip.

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются