PHP :: Строки
Создание строк в PHP
Строки представляют собой обычные последовательности из нуля и более символов. В PHP отсутствует встроенная поддержка стандарта Unicode, поэтому он поддерживает ровно 256 различных символов, каждый из которых представляет собой один байт. Также отметим, что в PHP строки не могут быть размером более 2Гб.
Для определения строк могут быть применены четыре различных способа, использующих одинарные кавычки, двойные кавычки, heredoc-синтаксис и nowdoc-синтаксис.
Способ определения строки при помощи одинарных кавычек наиболее простой, однако при этом переменные, использующиеся внутри них, не могут быть интерпретированы и рассматриваются, как обычные символы. Кроме того, не обрабатываются и управляющие последовательности для специальных символов, которые также будут выведены как есть, т.е. в виде обычного текста (см. пример №1). Исключение составляют лишь экранируемая одинарная кавычка \' и сам экранируемый обратный слэш \\. Экранировать данные символы при помощи обратного слэша необходимо для того, чтобы интерпретатор мог понять, что еще не наступил конец строки там, где он встретил одиночную кавычку, находящуюся за обратным слэшем. Тоже самое касается и самого обратного слэша. Увидев комбинацию из двух обратных слэшей, интерпретатор поймет, что программист намерен вывести сам символ обратного слэша, а не экранировать какой-нибудь символ. Если в строке, взятой в одинарные кавычки, применить двойные кавычки, то они также, как и все остальные символы, будут выводиться в виде обычного текста.
<?php //Присвоили строку в одинарных кавычках $c='Я – строка в одинарных кавычках.'; //Присвоили строку в двойных кавычках $d="Я – строка в двойных кавычках."; //Если строка окажется слишком длинной, то ее //можно разместить на нескольких строках $e='Я – очень длинная строка, поэтому меня разместили на двух строках.<br>'; //Выводим строку echo $e; //Используем одинарные кавычки внутри двойных echo "Он сказал: 'Это PHP!'<br>"; //Используем двойные кавычки внутри одинарных echo 'Он сказал: "Это PHP!"<br>'; //Экранируем одинарные кавычки внутри одинарных echo 'Он сказал: \'Это PHP!\'<br>'; //Экранируем двойные кавычки внутри двойных echo "Он сказал: \"Это PHP!\"<br>"; //Выводим символы через их коды echo "Выводим символы \x7e, \x60, \x5e."; ?>
Пример №1. Использование строк, заключенных в одинарные и двойные кавычки
В случае использования переменных внутри строки (смотреть) ее следует заключать в двойные кавычки, что также расширит и список разрешенных управляющих последовательностей для специальных символов (см. пример №1):
- \n – новая строка;
- \r – возврат каретки;
- \t – горизонтальная табуляция;
- \v – вертикальная табуляция;
- \e – escape-знак;
- \f – подача страницы;
- \\ – обратная косая черта;
- \$ – знак доллара;
- \" – двойная кавычка;
- \x[0-9A-Fa-f]{1,2} – символ, заданный одной или двумя цифрами в шестнадцатеричной системе счисления.
Другие символы интерпретатор экранировать не будет, вместо этого он поступит также, как и в случае со строкой, заключенной в одинарные кавычки, т.е. выведет как сам символ, так и обратный слэш.
Синтаксисы heredoc и nowdoc
В PHP существует еще два способа определения строк – это синтаксисы heredoc и nowdoc. Строка, определенная при помощи синтаксиса heredoc ведет себя также, как и строка в двойных кавычках, при этом их не имея, а nowdoc-текст ведет себя как строка в одинарных кавычках, но также их не имея. Эти особенности позволяют обойтись без экранирования двойных и одинарных кавычек внутри строк, определенных данными способами (см. пример №2).
<?php //Определили переменную для вывода в heredoc $a=25; $b=<<<HD Я – многострочная строка, написанная при помощи<br> синтаксиса heredoc. Двойные "кавычки" первого<br> уровня экранировать не нужно. Можно также <br> применять переменные, например, $a или {$a}aa.<br><br> HD; //Выведет всю строку с интерполированными переменными echo $b; $s=<<<'ND' Я – многострочная строка, написанная при помощи <br> синтаксиса nowdoc. Меня удобно применять для внедрения <br> больших фрагментов текста без необходимости его экранирования. <br>Переменные применять нельзя, т.к. выведет просто $a или {$a}. ND; //Выведет всю строку как есть echo $s; ?>
Пример №2. Использование синтаксисов heredoc и nowdoc
Heredoc-текст создается следующим образом: в отдельной строке записывается последовательность символов <<<, после чего указывается идентификатор, который должен соответствовать общим правилам создания идентификаторов, затем с новой строки записывается весь необходимый текст, а в самом конце в отдельной строке опять записывается идентификатор и после него ставится точка с запятой.
Nowdoc-текст создается аналогичным образом, за исключением того, что идентификатор после символов <<< должен заключаться в одинарные кавычки.
Важно иметь в виду, что после <<<[идентификатор] должен стоять только перевод строки и больше никаких символов. Строка с закрывающим идентификатором также должна содержать только [идентификатор] и точку с запятой, исключая наличие символов табуляции или пробелов (см. пример №2).
Конкатенация строк в PHP
Довольно часто возникает необходимость объединения двух и более строк в одну строку. Такой процесс называется конкатенация (от англ. concatenation). Осуществляется он при помощи обычной точки (см. пример №3). Забегая немного вперед, отметим, что при конкатенации со строкой значения любого типа будут также преобразованы в строку.
<?php //Определили первую строку $str_1='Один '; //Присвоили переменной число $n=2; //Выведет строку 'Один 2' echo $str_1.$n."<br>"; echo "Выводим ".'объединенную'.' строку.' ?>
Пример №3. Конкатенация строк