Menu

Строки в PHP: кавычки, конкатенация и интерполяция

Строки в PHP склеивают оператором точка ("Hello, " . $name) или подставляют переменные прямо в двойные кавычки ("Hello, $name"). Одинарные кавычки выводят текст как есть. Конкатенация, .=, интерполяция массивов и объектов, смена регистра через strtoupper, strtolower, ucfirst и ucwords.

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

Строка в PHP это текст в одинарных или двойных кавычках. Склеивайте строки оператором точка, $first . ' ' . $last, или подставляйте переменную прямо в двойные кавычки: "Hello, $name".

Точка склеивает любые два значения в новую строку. Числа преобразуются автоматически, поэтому "Total: " . 42 даёт "Total: 42".

Одинарные и двойные кавычки

Двойные кавычки делают две дополнительные вещи: подставляют значения переменных и превращают escape-последовательности вроде \n (перенос строки) и \t (табуляция) в соответствующие символы. Одинарные кавычки выводят текст точно как написано, кроме \' и \\.

Используйте одинарные кавычки для неизменного текста, а двойные, когда внутри нужна переменная или \n. Разница в скорости между ними слишком мала, чтобы её измерить, так что выбирайте то, с чем строка читается легче.

Конкатенация через . и .=

.= дописывает текст в конец строковой переменной. Это обычный способ собирать текст в цикле, например кусок HTML. Запустите блок, и редактор откроет вкладку Page с отрисованным списком.

Приоритет важен, когда . смешивается с арифметикой. Начиная с PHP 8, + и - связывают сильнее, чем ., поэтому "Sum: " . 2 + 3 даёт "Sum: 5". Скобки делают это очевидным для следующего читателя: "Sum: " . (2 + 3).

Переменные, массивы и объекты внутри строки

Обычная переменная внутри двойных кавычек работает сама по себе. Для элемента массива, цепочки свойств объекта или вызова метода оберните выражение в фигурные скобки. Скобки также отделяют переменную от идущих за ней букв.

Методы внутри скобок работают, обычные функции нет: последняя строка выводит скобки и имя функции вокруг значения $fruit. Вызовите функцию до строки или используйте sprintf, когда в строке много значений.

Смена регистра: strtoupper, strtolower, ucfirst, ucwords

Эти функции работают побайтно и меняют только буквы от a до z. Для текста с диакритикой, кириллицы или греческого используйте многобайтовые версии, которые понимают UTF-8:

Отдельные символы и повтор строк

К строке можно обращаться по индексу, как к массиву. Отрицательные смещения отсчитываются с конца. О подсчёте символов смотрите strlen.

Частая ошибка: + вместо .

В JavaScript + склеивает строки. В PHP + всегда арифметика: числовые строки складываются как числа, а текст, не являющийся числом, вызывает ошибку.

Если вы видите число там, где ждали склеенный текст, или ошибку Unsupported operand types: string + string, ищите +, который должен быть ..

Часто задаваемые вопросы

Как склеить строки в PHP?

Используйте оператор точка: $full = $first . ' ' . $last;. Чтобы дописать к существующей строке, используйте .=: $html .= '<li>Item</li>';. Оператор + предназначен для чисел, а "Hello" + "World" в PHP 8 выбрасывает TypeError.

Чем отличаются одинарные и двойные кавычки в PHP?

Двойные кавычки подставляют переменные и обрабатывают escape-последовательности: "Hi $name\n" выводит значение $name и перенос строки. Одинарные выводят почти всё как написано: 'Hi $name\n' выведет знак доллара, имя и обратный слеш с буквой n. Внутри одинарных кавычек экранируются только \' и \\.

Как вставить значение массива в строку PHP?

Оберните его в фигурные скобки: "Hello, {$user['name']}". Так же работают свойства объектов и вызовы методов: "{$user->getName()}". Без скобок для простого ключа работает и "$user[name]" (без кавычек вокруг ключа).

Как перевести строку в верхний или нижний регистр в PHP?

strtoupper('php') возвращает PHP, strtolower('PHP') возвращает php, ucfirst('hello') делает заглавной первую букву, а ucwords('hello world') первую букву каждого слова. Для текста с диакритикой или нелатинскими буквами используйте mb_strtoupper() и mb_strtolower().

Иллюстрация языков программирования Coddy

Учитесь программировать с Coddy

НАЧАТЬ