базовый курс

ГРУППА КУРСА

Работа со строками в PHP

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

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

+
1
2
<?php
header('Content-type: text/html; charset=utf-8');
3
$str = 'Строка с текстом';

Сложение строк

Для сложения строк не работает оператор "+". Вместо этого используется точка. Пример:

4
5
$newstr = $str.' для вывода на экран';
echo $newstr;

Переменную можно вставить в строку. Но для этого строка должна быть именно в двойных кавычках. Если она будет в одинарных, то в строку будет добавлено не значение а имя переменной, то есть знак $ и название. А если строка в двойных кавычках, то будет вставлено значение переменной.

6
7
echo '<br>';
echo "Это $str";

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

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

В PHP есть достаточно много функций для работы со строкими. Однако, в их использовании есть одна сложность: они расчитаны на строки в однобайтных кодировках. В таких кодировках каждый символ занимает один байт. Но современные кодировки, в том числе, UTF-8, многобайтные. Поэтому некоторые функции работают неправильно со строками, содержащими русские буквы. В частности, неправильно определяются позиции символов в строке и длина строки. Одно из решений - использовать функции предназначенные для работы с многобайтными кодировками. Названия таких функций начинаются со слова mb. Перед их использованием необходимо указать внутреннюю кодировку скрипта. Для этого используестся функция mb_internal_encoding(). Она пишется один раз скрипте до использования строковых функций.

Функция mb_substr() возвращает подстроку, начиная с указанного символа:

mb_substr (строка, начальный символ, длина)

Параметры:

строка - строка из которой получается подстрока.

начальный символ - номер символа, с которого начинается подстрока

длина - длина подстроки. Необязательный параметр. Если не указать, то будет получена подстрока до конца строки.

В PHP, как и в большинстве языков программирования, отсчёт символов в строке начинается с нуля.

Для примера выведем подстроку из переменной $str, начиная с 0 символа, длиной 6 символов:

8
9
10
echo '<br>';
mb_internal_encoding("UTF-8");
echo mb_substr($str, 0, 6);

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

Длину тоже можно указать отрицательным числом. Тогда этот параметр меняет свой смысл. Это не длина подстроки, а номер символа с конца строки, до которого доходит подстрока. Выведем подстроку начиная с 7 символа с конца строки, длиной 5 символов:

11
12
echo '<br>';
echo mb_substr($str, -7, 5);

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

mb_strpos (строка, подстрока, начальный символ)

Параметры:

строка - строка в которой производится поиск

подстрока - подстрока, которую нужно найти

начальный символ - номер символа, с которого начинается поиск. Необязательный параметр. Позволяет осуществлять поиск не с начала строки, а с указанного символа.

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

Для примера найдём позицию, с которой начинается слово "на" в переменной $newstr:

15
16
echo '<br>';
echo mb_strpos($newstr, 'на');

Функция mb_strrpos() находит позицию не первого, а последнего вхождения подстроки в строке. Параметры у неё такие же.

Кроме того, существуют функции mb_stripos() и mb_strripos(), которые также находят позицию первого и последнего вхождения подстроки, но они не учитывают регистр символов.

Функция str_replace() находит все вхождения подстроки и заменяет их на другую подстроку. Она не выводит позицию символов, поэтому её можно использовать с русскими символами.

str_replace (искомая подстрока, новая подстрока, строка, количество замен)

Параметры:

искомая подстрока - подстрока, которая будет заменена

новая подстрока - подстрока, на которую происходит замена

строка - строка, в которой производится замена

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

Для примера заменим в переменной $newstr слово "экран" на слово "страницу":

13
14
echo '<br>';
echo str_replace('экран', 'страницу', $newstr);

Учитывайте, что эта функция не меняет значение переменной, она только возвращает новое значение, а сама переменная остаётся неизменной.

Вместо строки, в которой производится замена, может быть массив. Тогда замена будет сделана для всех элеменах массива и функция str_replace() также вернёт массив.

Вместо иcкомой подстроки и новой подстроки также могут быть массивы. Можно использовать одну подстроку для замены массива. Тогда все элементы массива будут заменены на новую подстроку.