W3docs

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);      // The

sprintf строит строку по шаблону, что удобно для чисел и выравнивания:

<?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 числа и массивы.

Практика

Практика
Какие из следующих утверждений о строках в PHP верны?
Какие из следующих утверждений о строках в PHP верны?
Was this page helpful?