Строки в PHP
Строки — это последовательности символов, которые могут рассматриваться как единое целое — присваиваться переменным, передаваться в качестве входных данных в функции, возвращаться из функций или отправляться в качестве выходных данных для отображения на web -странице пользователя. Тип переменных такого типа string
Простейший способ задания строки в коде PHP состоит в заключении последовательности символов в кавычки, одинарные (') или двойные ("), например, следующим образом:
$my_string = 'Простая строка'; $another_string = "Еще одна строка";
Чем отличается обработка строк, заключенных в кавычки, одинарные (') или двойные (").
Если строка заключена в одинарные кавычки, то не выполняется почти никакая интерпретация, а если строка заключена в двойные кавычки, то в среде PHP осуществляется подстановка значений всех переменных, которые указаны в строке, а также выполняется замена некоторых специальных символьных последовательностей, которые начинаются с символа обратной косой черты (\). Если строка заключена в двойные кавычки ("), PHP распознает следующие управляющие последовательности специальных символов \ n, \t, \v,\e и т.д.
Например , после обработки следующего кода, входящего в состав веб-страницы:
$count = 13;
$string_1 = "В строке \"Hello, world!\" $count символов.
";
$string_2 = 'В строке \'Hello, world!\' $count символов.
'; echo $string_1;
echo $string_2;
Результат
Подстановка значений
Можно включить переменную в строку с двойными кавычками, и значение переменной будет подставлено в строку во время обработки строки интерпретатором. Но в двух описанных ниже ситуациях может оказаться, что интерпретатор строк не способен принять обоснованное решение и ему требуются дополнительные указания от разработчика.
1- ая ситуация состоит в том, что интерпретатор не может определить, где оканчивается имя переменной, а вторая ситуация возникает, когда необходимо подставить в строку не значение простой переменной, а значение выражения. В этих случаях необходимо внести ясность, заключив имя или выражение, подлежащее обработке, в фигурные скобки ({}).
Например , интерпретатор PHP не испытывает затруднений при обработке следующего кода:
$sport = 'волейбол';
$play = "Я люблю играть в $sport.";
Интерпретатор обнаруживает символ $, начинает собирать символы в подстроку для выявления имени переменной и выполняет такую сборку до тех пор, пока не встретится пробел или точку, которые следуют за именем переменной $sport. Пробелы и точки не могут входить в состав имени переменной, поэтому рассматриваемая переменная имеет имя $sport; после этого интерпретатор PHP успешно находит значение для данной переменной ('волейбол') и подставляет его.
Иногда не существует возможности обозначить конец имени переменной с помощью пробела или точки. Рассмотрим следующий пример :
$sport_1 = 'волей';
$sport_2 = 'фут';
$sport_3 = 'баскет';
// Неправильные конструкции
$play_1 = "Я люблю играть в $sport_1бол.";
$play_2 = "Я люблю играть в $sport_2бол.";
$play_3 = "Я люблю играть в $sport_3бол.";
Здесь интерпретатор PHP будет рассматривать строку $sport_1 как часть имени переменной $sport_1бол, которой не присвоено какое-либо значение. Вместо этого необходимо применять такую запись:
// Правильная конструкция
$play_1 = "Я люблю играть в {$sport_1}бол.";
$play_2 = "Я люблю играть в {$sport_2}бол.";
$play_3 = "Я люблю играть в {$sport_3}бол.";
Интерпретатор PHP перед подстановкой значений вычислит значение выражения, заключенное в фигурные скобки.
Общее правило состоит в том, что если за открывающей фигурной скобкой ({) непосредственно следует символ $, то интерпретатор PHP вычисляет значение выражения с именем переменной до закрывающей фигурной скобки (}), а затем подставляет результирующее значение в строку.
Если требуется, чтобы в строке появилось литеральное значение {$, это можно обеспечить, поставив перед каждым из этих символов обратную косую черту, \).
В языке PHP нет отдельного символьного типа, не совпадающего со строковым типом. Функции, которые требуют применения символьных фактических параметров, в языке PHP рассчитаны на получение строк с длиной 1.
Выборка отдельных символов из строки может осуществляться путем указания порядкового номера символа, начинающегося с нуля, который должен быть указан в фигурных скобках непосредственно за именем строковой переменной. Такие символы фактически представляют собой односимвольные строки. Например, выполнение следующего кода:
$my_string = "Doubled";
for ($index = 0; $index
{
$char = $my_string{$index } ;
print ("$char$char");
}
При каждом проходе по циклу каждый символ строки выводится дважды. Функция strlen() возвращает длину строки .
Операции со строками
В языке PHP предусмотрены две строковые операции: операция со знаком операции точка (.), или операция конкатенации, и операция со знаком операции точка и знак равенства (.=), или операция конкатенации и присваивания. Рассмотрим следующий пример:
$string_1 = "Это часть";
$string_2 = "строки";
// Конкатенация строк
echo $string_1." простой ".$string_2."
";
// "Это часть простой строки"
// Конкатенация и присваивание
$string_1 .= " простой ";
// Эквивалентно $string_1 = $string_1." простой ";
$string_1 .= $string_2;
echo $string_1; // "Это часть простой строки"
Синтаксическая структура вложенного документа (Heredoc)
Кроме синтаксических структур строк в одинарных и двойных кавычках, в языке PHP предусмотрен еще один способ задания строки, называемый синтаксической структурой вложенного документа (Heredoc) . Такая структура является весьма удобным средством задания больших фрагментов текста, подставляемого с помощью переменных, поскольку избавляет пользователя от необходимости обозначать внутренние кавычки с помощью специальных символов. Такой способ особенно удобен при создании страниц, которые содержат формы HTML. Знаком операции, применяемом в синтаксической структуре вложенного документа, является (
За этим знаком должна следовать метка (не заключенная в кавычки), которая обозначает начало многострочного текста. Интерпретатор PHP продолжает включать в состав значения переменной следующие строки до тех пор, пока снова не появится эта же метка в начале строки. За заключительной меткой может следовать необязательная точка с запятой, а какие-либо другие символы после метки не допускаются.
$string =
EOT;
echo $string;
Указанное выше заключительное слово EOT вообще не должно обозначаться отступом , в противном случае оно будет рассматриваться как принадлежащее к дополнительно включаемому тексту. В качестве метки не обязательно использовать слово "EOT", метка может иметь любое имя, соответствующее обычным правилам именования переменных в языке PHP.
Подстановка значений переменных осуществляется так же, как и при использовании строк, заключенных в двойные кавычки. Особенностью вложенного документа является то, что в обозначаемый таким образом текст можно вводить знаки кавычек без применения каких-либо управляющих символов, и это не приводит к преждевременному завершению формирования строки.
Синтаксическая структура вложенного документа ( Nowdoc)
Nowdoc - это то же самое для строк в одинарных кавычках, что и heredoc для строк в двойных кавычках. Nowdoc похож на heredoc, но внутри него не осуществляется никаких подстановок . Эта конструкция идеальна для внедрения PHP-кода или других больших блоков текста без необходимости его экранирования.
Nowdoc указывается той же последовательностью , что используется в heredoc, но последующий за ней идентификатор заключается в одинарные кавычки, например, . Все условия, действующие для heredoc идентификаторов также действительны и для nowdoc, особенно те, что относятся к закрывающему идентификатору.
$str = Пример текста, занимающего несколько строк, с помощью синтаксиса nowdoc. EOD;
Поддержка nowdoc была добавлена в PHP 5.3.0
http://php.net/manual/ru/