PHP String
Узнайте, как работают строки в PHP — создание, одинарные и двойные кавычки, heredoc/nowdoc, управляющие последовательности, конкатенация и наиболее используемые строковые функции с примерами.
Строка в PHP — это последовательность символов: текст вроде имени, предложения или целого HTML-документа. Строки являются одним из наиболее используемых типов данных в PHP, и язык поставляется с большой библиотекой функций для поиска, замены, форматирования и преобразования строк.
На этой странице рассматривается создание строк, разница между одинарными и двойными кавычками, управляющие последовательности, объединение строк и наиболее часто используемые строковые функции.
Создание строки
Строковый литерал можно записать с помощью одинарных (') или двойных (") кавычек:
<?php
$greeting = 'Hello';
$name = "World";
echo $greeting; // Hello
?>Для более длинного или сложного текста PHP также предлагает синтаксис heredoc и nowdoc, описанный ниже.
Одинарные и двойные кавычки
Это наиболее важное различие, которое нужно усвоить с самого начала. Строки в двойных кавычках разбирают переменные и управляющие последовательности; строки в одинарных кавычках — нет.
<?php
$name = "Alice";
echo "Hello, $name\n"; // Hello, Alice (then a newline)
echo 'Hello, $name\n'; // Hello, $name\n (printed literally)
?>В варианте с двойными кавычками $name заменяется значением переменной, а \n становится настоящим переносом строки. В варианте с одинарными кавычками оба элемента выводятся ровно так, как были набраны.
Одинарные кавычки немного быстрее и безопаснее, когда интерполяция не нужна, поэтому используйте их для простых литералов и переключайтесь на двойные кавычки только тогда, когда внутри строки необходима переменная или управляющая последовательность.
Интерполяция с фигурными скобками
Когда за переменной следуют символы, которые могут быть частью её имени, заключите переменную в {}, чтобы PHP знал, где заканчивается имя:
<?php
$fruit = "apple";
echo "I ate two {$fruit}s\n"; // I ate two apples
?>Управляющие последовательности
Управляющие последовательности имеют смысл только внутри строк в двойных кавычках (и heredoc):
| Последовательность | Значение |
|---|---|
\n | Перенос строки |
\t | Табуляция |
\\ | Обратный слеш |
\" | Двойная кавычка |
\$ | Знак доллара (предотвращает интерполяцию) |
<?php
echo "Line one\nLine two\n";
echo "Price: \$10\n"; // Price: $10
?>Heredoc и nowdoc
Для многострочного текста heredoc ведёт себя как строка в двойных кавычках (переменные разбираются), а nowdoc ведёт себя как строка в одинарных кавычках (ничего не разбирается).
<?php
$name = "Sam";
// Heredoc - interpolates $name
echo <<<EOT
Dear $name,
Welcome aboard!
EOT;
echo "\n---\n";
// Nowdoc - prints $name literally
echo <<<'EOT'
Dear $name,
This is shown verbatim.
EOT;
?>Закрывающий идентификатор (EOT здесь) должен начинаться с начала строки.
Конкатенация
Строки объединяются с помощью оператора точки (.). Оператор .= добавляет к существующей строке:
<?php
$first = "John";
$last = "Doe";
$full = $first . " " . $last;
echo $full . "\n"; // John Doe
$message = "Hello";
$message .= ", world!";
echo $message . "\n"; // Hello, world!
?>Полный список строковых и арифметических операторов см. в разделе PHP Операторы.
Распространённые строковые функции
Стандартная библиотека PHP включает десятки строковых функций. Вот те, которые вы будете использовать чаще всего:
<?php
$text = "Hello, World";
echo strlen($text) . "\n"; // 12 - length in bytes
echo strtoupper($text) . "\n"; // HELLO, WORLD
echo strtolower($text) . "\n"; // hello, world
echo str_replace("World", "PHP", $text) . "\n"; // Hello, PHP
echo strpos($text, "World") . "\n"; // 7 - index of first match
echo substr($text, 0, 5) . "\n"; // Hello
echo trim(" padded ") . "|\n"; // padded|
?>| Функция | Что делает |
|---|---|
strlen() | Возвращает длину строки |
strtoupper() / strtolower() | Изменяет регистр |
str_replace() | Заменяет все вхождения подстроки |
strpos() | Находит позицию подстроки (возвращает false, если не найдена) |
substr() | Извлекает часть строки |
trim() | Удаляет пробельные символы с обоих концов |
explode() | Разбивает строку на array |
implode() | Объединяет array в строку |
Форматирование с помощью sprintf()
Когда нужен точный контроль над тем, как значения вставляются в строку — дополнение, форматирование чисел, выравнивание, — используйте sprintf(). Она возвращает отформатированную строку (а printf() выводит её напрямую):
<?php
$name = "Alice";
$score = 92.5;
$line = sprintf("%s scored %.1f%%", $name, $score);
echo $line . "\n"; // Alice scored 92.5%
?>Заполнитель %s вставляет строку, %d — целое число, а %.1f — число с плавающей точкой, округлённое до одного знака после запятой.
Доступ к отдельным символам
К строке можно обращаться по индексу, как к array, начиная с 0:
<?php
$word = "PHP";
echo $word[0] . "\n"; // P
echo $word[2] . "\n"; // P
?>Что дальше
- PHP Strings — более глубокое руководство по работе с текстом в PHP.
- PHP Data Types — как строки соотносятся с целыми числами, числами с плавающей точкой, массивами и другими типами.
- PHP Functions — создавайте собственные многоразовые функции.