В прогрессе
Урок 7 из 29
В прогрессе

7php

Строки ¶

Строка (тип string) — это набор символов, где символ — это то же самое, что и байт. Это значит, что PHP поддерживает ровно 256 различных символов, а также то, что в PHP нет встроенной поддержки Unicode. Смотрите также подробности реализации строкового типа.

ЗамечаниеВ 32-битных системах и в более ранних версиях PHP, строки (string) не могут быть более 2 ГБ (2147483647 байт).

Синтаксис ¶

Строка может быть определена четырьмя различными способами:

Одинарные кавычки ¶

Простейший способ определить строку — это заключить её в одинарные кавычки (символ ').

Чтобы использовать одинарную кавычку внутри строки, проэкранируйте её обратным слешем (\). Если необходимо написать сам обратный слеш, продублируйте его (\\). Все остальные случаи применения обратного слеша будут интерпретированы как обычные символы: это означает, что если вы попытаетесь использовать другие управляющие последовательности, такие как \r или \n, они будут выведены как есть вместо какого-либо особого поведения.

ЗамечаниеВ отличие от синтаксиса двойных кавычек и heredocпеременные и управляющие последовательности для специальных символов, заключённых в одинарные кавычки, не обрабатываются.

<?php
echo 'это простая строка';

echo 'Также вы можете вставлять в строки
символ новой строки вот так,
это нормально';

// Выводит: Однажды Арнольд сказал: "I'll be back"
echo 'Однажды Арнольд сказал: "I\'ll be back"';

// Выводит: Вы удалили C:\*.*?
echo 'Вы удалили C:\\*.*?';

// Выводит: Вы удалили C:\*.*?
echo 'Вы удалили C:\*.*?';

// Выводит: Это не будет развёрнуто: \n новая строка
echo 'Это не будет развёрнуто: \n новая строка';

// Выводит: Переменные $expand также $either не разворачиваются
echo 'Переменные $expand также $either не разворачиваются';
?>

Двойные кавычки ¶

Если строка заключена в двойные кавычки («), PHP распознает следующие управляющие последовательности специальных символов:

Управляющие последовательности
Последовательность Значение
\n новая строка (LF или 0x0A (10) в ASCII)
\r возврат каретки (CR или 0x0D (13) в ASCII)
\t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
\v вертикальная табуляция (VT или 0x0B (11) в ASCII)
\e escape-знак (ESC или 0x1B (27) в ASCII)
\f подача страницы (FF или 0x0C (12) в ASCII)
\\ обратная косая черта
\$ знак доллара
\" двойная кавычка
\[0-7]{1,3} последовательность символов, соответствующая регулярному выражению символа в восьмеричной системе счисления, который молча переполняется, чтобы поместиться в байт (т.е. «\400» === «\000»)
\x[0-9A-Fa-f]{1,2} последовательность символов, соответствующая регулярному выражению символа в шестнадцатеричной системе счисления
\u{[0-9A-Fa-f]+} последовательность символов, соответствующая регулярному выражению символа Unicode, которая отображается в строка в представлении UTF-8

Как и в строке, заключённой в одинарные кавычки, экранирование любого другого символа выведет также и сам символ экранирования.

Но самым важным свойством строк в двойных кавычках является обработка переменных. Смотрите более подробно обработку строк.

Heredoc ¶

Третий способ определения строк — это использование heredoc-синтаксиса: <<<. После этого оператора необходимо указать идентификатор, затем перевод строки. После этого идёт сама строка, а потом этот же идентификатор, закрывающий вставку.

Закрывающий идентификатор может иметь отступ с помощью пробела или табуляции, и в этом случае отступ будет удалён из всех строк в строке документа. До PHP 7.3.0 закрывающий идентификатор должен был находиться в самом начале новой строки.

Кроме того, закрывающий идентификатор должен соответствовать тем же правилам именования, что и любая другая метка в PHP: он должен содержать только буквенно-цифровые символы и подчёркивания и должен начинаться с нецифрового символа или символа подчёркивания.