PHP Строки: Подробное руководство
Погружение в мир PHP строк: создание, одинарные и двойные кавычки, конкатенация, встроенные функции, Heredoc и Nowdoc.
Строка — это последовательность символов, используемая для хранения и обработки текста: имён, сообщений, HTML, JSON, содержимого файлов и многого другого. Строки являются одним из основных типов данных PHP, и практически каждая PHP-программа работает с ними. В этом руководстве рассматривается создание строк, принципиальное различие между одинарными и двойными кавычками, конкатенация, доступ к отдельным символам, наиболее полезные встроенные функции, управляющие последовательности, а также многострочные синтаксисы Heredoc и Nowdoc — с примерами, которые можно запустить.
Что такое строка PHP?
Строка — это текст, заключённый в кавычки и сохранённый в переменной. PHP предоставляет четыре способа её написания: одинарные кавычки, двойные кавычки, Heredoc и Nowdoc. Два стиля кавычек используются чаще всего:
<?php
$single = 'Hello World';
$double = "Hello World";
echo $single; // Hello World
echo "\n";
echo $double; // Hello WorldСтроки не имеют фиксированного ограничения длины, кроме доступной памяти, поэтому строка может содержать один символ или целый документ.
Одинарные и двойные кавычки
Это наиболее важное различие, которое следует усвоить в первую очередь, поскольку выбор неправильного стиля кавычек является частым источником ошибок. Двойные кавычки обрабатывают управляющие последовательности и интерполируют переменные; одинарные кавычки воспринимают почти всё буквально.
<?php
$name = 'Alice';
echo "Hello $name\n"; // Hello Alice (variable + newline parsed)
echo 'Hello $name\n'; // Hello $name\n (printed literally)Когда переменная примыкает к другим символам, заключите её в фигурные скобки, чтобы PHP знал, где заканчивается имя:
<?php
$item = 'book';
echo "I bought 3 {$item}s\n"; // I bought 3 booksОдинарные кавычки незначительно быстрее и безопаснее, когда интерполяция не нужна — отдавайте им предпочтение для фиксированного текста. Используйте двойные кавычки (или Heredoc), когда необходимо встраивать переменные или управляющие последовательности.
Конкатенация строк
Объединение строк в одну называется конкатенацией. PHP использует оператор точки (.) (оператор), а .= добавляет к существующей строке:
<?php
$first = 'Hello';
$last = 'World';
$greeting = $first . ' ' . $last;
echo $greeting; // Hello World
$greeting .= '!';
echo "\n" . $greeting; // Hello World!Обратите внимание, что PHP использует . для конкатенации, а не + — использование + с двумя строками выполняет числовое сложение, что почти никогда не является желаемым результатом.
Доступ к символам
Строка ведёт себя как массив символов. Любой символ можно прочитать по его нулевому индексу с помощью квадратных скобок:
<?php
$word = 'PHP';
echo $word[0]; // P
echo $word[2]; // P
echo $word[-1]; // P (negative index counts from the end)Чтобы получить длину строки, используйте strlen:
<?php
echo strlen('Hello World'); // 11 (the space counts)Основные строковые функции
PHP поставляется с богатой библиотекой строковых функций. Ниже перечислены наиболее востребованные из них, каждая со ссылкой на отдельную главу:
| Функция | Назначение |
|---|---|
strlen | Длина строки (в байтах) |
strpos | Позиция первого вхождения подстроки |
str_replace | Замена всех вхождений подстроки |
strtoupper / strtolower | Изменение регистра |
substr | Извлечение части строки |
trim | Удаление пробелов с обоих концов |
explode / implode | Преобразование между строками и массивами |
sprintf | Форматирование строки по шаблону |
Краткий обзор:
<?php
$text = ' The quick brown fox ';
echo strlen($text); // 23
echo "\n";
echo strpos($text, 'quick'); // 6
echo "\n";
echo str_replace('quick', 'slow', trim($text)); // The slow brown fox
echo "\n";
echo strtoupper(trim($text)); // THE QUICK BROWN FOX
echo "\n";
echo substr(trim($text), 0, 3); // Thesprintf строит строку по шаблону, что удобно для чисел и выравнивания:
<?php
$price = 9.5;
echo sprintf('Total: $%.2f', $price); // Total: $9.50Работа с Unicode
Стандартные функции, такие как strlen и strpos, считают байты, а не символы. Для текста, содержащего буквы с диакритикой, эмодзи или нелатинские письменности, используйте многобайтовые эквиваленты mb_* из расширения mbstring, чтобы многобайтовые символы подсчитывались корректно:
<?php
$word = 'café';
echo strlen($word); // 5 (é is 2 bytes in UTF-8)
echo "\n";
echo mb_strlen($word); // 4 (correct character count)Управляющие последовательности
Внутри строк с двойными кавычками обратная косая черта начинает управляющую последовательность — способ записи символов, которые трудно ввести или которые иначе были бы обработаны парсером. Основные из них:
| Последовательность | Значение |
|---|---|
\n | Новая строка |
\t | Табуляция |
\" | Буквальная двойная кавычка |
\\ | Буквальная обратная косая черта |
\$ | Буквальный знак доллара (подавление интерполяции) |
<?php
echo "Line 1\nLine 2"; // prints on two lines
echo "\n";
echo "Price: \$5"; // Price: $5
echo "\n";
echo "She said \"hello\""; // She said "hello"Строки в одинарных кавычках распознают только \' (буквальная кавычка) и \\; всё остальное, включая \n, выводится буквально.
Heredoc и Nowdoc
Когда нужна длинная многострочная строка, Heredoc и Nowdoc удобнее, чем ручное экранирование символов новой строки.
Heredoc ведёт себя как строка с двойными кавычками: переменные интерполируются, управляющие последовательности работают. Открывается с помощью <<< за которым следует идентификатор, и закрывается этим же идентификатором на отдельной строке:
<?php
$name = 'Alice';
$message = <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear Alice,
// Welcome aboard!Nowdoc ведёт себя как строка с одинарными кавычками — без интерполяции, без обработки управляющих последовательностей. Единственное синтаксическое отличие заключается в том, что открывающий идентификатор заключается в одинарные кавычки:
<?php
$name = 'Alice';
$message = <<<'EOT'
Dear $name,
Welcome aboard!
EOT;
echo $message;
// Dear $name,
// Welcome aboard!Используйте Heredoc для шаблонного вывода (электронные письма, блоки HTML) и Nowdoc, когда текст должен остаться в точности таким, как написан.
Итоги
Строки PHP — это основа работы с текстом. Главное, что нужно помнить:
- Используйте одинарные кавычки для буквального текста и двойные кавычки (или Heredoc), когда нужна интерполяция переменных или управляющие последовательности.
- Выполняйте конкатенацию с помощью оператора
., а не+. - Используйте встроенные функции, такие как
strlen,substr,str_replaceиexplode, вместо того чтобы изобретать велосипед. - Используйте функции
mb_*, когда текст может содержать символы, не входящие в ASCII.
Далее узнайте, как выводить строки и другие значения с помощью echo и print, или изучите PHP числа и массивы.