W3docs

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 — создавайте собственные многоразовые функции.

Практика

Практика
В PHP какую из следующих функций можно использовать для возврата отформатированной строки?
В PHP какую из следующих функций можно использовать для возврата отформатированной строки?
Was this page helpful?