belarusweb.net
© Петр Романовский Минск, 2016-2017.



belarusweb.net

Основы создания сайтов...

PHP+MySQL >>>

                          Учебник Задачник Справочник

2.5. Строки

Строки представляют собой обычные последовательности из нуля и более символов. В PHP отсутствует встроенная поддержка стандарта Unicode, поэтому он поддерживает ровно 256 различных символов, каждый из которых представляет собой один байт. Также отметим, что в PHP строки не могут быть размером более 2Гб.

Для определения строк могут быть применены четыре различных способа, использующих одинарные кавычки, двойные кавычки, heredoc-синтаксис и nowdoc-синтаксис.

Способ определения строки при помощи одинарных кавычек наиболее простой, однако при этом переменные, использующиеся внутри них, не могут быть интерпретированы и рассматриваются, как обычные символы. Кроме того, не обрабатываются и управляющие последовательности для специальных символов, которые также будут выведены как есть, т.е. в виде обычного текста (см. пример 2.6). Исключение составляют лишь экранируемая одинарная кавычка \' и сам экранируемый обратный слэш \\. Экранировать данные символы при помощи обратного слэша необходимо для того, чтобы интерпретатор мог понять, что еще не наступил конец строки там, где он встретил одиночную кавычку, находящуюся за обратным слэшем. Тоже самое касается и самого обратного слэша. Увидев комбинацию из двух обратных слэшей, интерпретатор поймет, что программист намерен вывести сам символ обратного слэша, а не экранировать какой-нибудь символ. Если в строке, взятой в одинарные кавычки, применить двойные кавычки, то они также, как и все остальные символы, будут выводиться в виде обычного текста.

<?php
$c='Я &ndash; строка в одинарных кавычках.';//Присвоили строку в одинарных кавычках 
$d="Я &ndash; строка в двойных кавычках.";  //Присвоили строку в двойных кавычках
 
$e='Я &ndash; очень длинная строка, поэтому меня 
разместили на двух строках.<br>';  //Если строка окажется слишком длинной, 
											  //то ее можно разместить на нескольких строках 
echo $e; 								  //Выводим строку

echo "Он сказал: 'Это PHP!'<br>";  //Используем одинарные кавычки внутри двойных 
echo 'Он сказал: "Это PHP!"<br>';  //Используем двойные кавычки внутри одинарных 
echo 'Он сказал: \'Это PHP!\'<br>';//Экранируем одинарные кавычки внутри одинарных 
echo "Он сказал: \"Это PHP!\"<br>";//Экранируем двойные кавычки внутри двойных 
echo "Выводим символы \x7e, \x60, \x5e.";   //Выводим символы через их коды
?>

Пример 2.6. Использование строк, заключенных в одинарные и двойные кавычки

В случае использования переменных внутри строки (смотреть) ее следует заключать в двойные кавычки, что также расширит и список разрешенных управляющих последовательностей для специальных символов (см. пример 2.6):

Другие символы интерпретатор экранировать не будет, вместо этого он поступит также, как и в случае со строкой, заключенной в одинарные кавычки, т.е. выведет как сам символ, так и обратный слэш.

В PHP существует еще два способа определения строк – это синтаксисы heredoc и nowdoc. Строка, определенная при помощи синтаксиса heredoc ведет себя также, как и строка в двойных кавычках, при этом их не имея, а nowdoc-текст ведет себя как строка в одинарных кавычках, но также их не имея. Эти особенности позволяют обойтись без экранирования двойных и одинарных кавычек внутри строк, определенных данными способами (см. пример 2.7).

<?php
$a=25; 		//Определили переменную для вывода в heredoc

$b=<<<HD
Я &ndash; многострочная строка, написанная  при помощи<br> 
синтаксиса heredoc. Двойные "кавычки" первого<br>
уровня экранировать не нужно. Можно также <br> 
применять переменные, например, $a или {$a}aa.<br><br>  
HD;

echo $b; 	//Выведет всю строку с интерполированными переменными

$s=<<<'ND'
Я &ndash; многострочная строка, написанная при помощи <br> 
синтаксиса nowdoc. Меня удобно применять для внедрения <br>
больших фрагментов текста без необходимости его экранирования.
<br>Переменные применять нельзя, т.к. выведет просто $a или {$a}.
ND;

echo $s; 	//Выведет всю строку как есть
?>

Пример 2.7. Использование синтаксисов heredoc и nowdoc

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

Nowdoc-текст создается аналогичным образом, за исключением того, что идентификатор после символов <<< должен заключаться в одинарные кавычки.

Важно иметь в виду, что после <<<[идентификатор] должен стоять только перевод строки и больше никаких символов. Строка с закрывающим идентификатором также должна содержать только [идентификатор] и точку с запятой, исключая наличие символов табуляции или пробелов (см. пример 2.7).

Довольно часто возникает необходимость объединения двух и более строк в одну строку. Такой процесс называется конкатенация (от англ. concatenation). Осуществляется он при помощи обычной точки (см. пример 2.8). Забегая немного вперед, отметим, что при конкатенации со строкой значения любого типа будут также преобразованы в строку.

<?php
$str_1='Один '; 			//Определили первую строку
$n=2; 						//Присвоили переменной число

echo $str_1.$n."<br>";  //Выведет строку 'Один 2'

echo "Выводим ".'объединенную'.' строку.'
?> 

Пример 2.8. Конкатенация строк

Контрольные вопросы и задания

  1. В чем заключается разница между строками взятыми в одинарные и двойные кавычки?
  2. Для чего в строках используется обратный слэш?
  3. Опишите способы определения строк при помощи синтаксисов heredoc и nowdoc.
  4. Что такое конкатенация?

Словарь новых английских слов

boolean [bʊˈlɪən] – логический тип.
integer [ˈɪntɪdʒə] – целое число.
float [fləʊt] – плавать, число с плавающей точкой.
string [strɪŋ] – струна, строка.
array [əˈreɪ] – массив.
object [ˈɒbdʒɪkt] – объект, предмет.
resource [rɪˈsɔːs] – ресурс.
null [nʌl] – отсутствующий, нулевой.
true [truː] – истинный, верный.
false [fɔːls] – ложный, неверный.
number [ˈnʌmbə] – число, количество.
here [hɪə] – здесь, тут.
now [naʊ] – теперь, сейчас.
concatenation [kənkatəˈneɪʃn] – сцепление.
key [kiː] – ключ.
value [ˈvæljuː] – значение.
unset [ʌnˈsɛt] – сброс.

Комментарии (0)
Петр Романовский
1. Приветствуются комментарии, которые содержат дополнения к материалу текущей страницы, а также ваши ответы на вопросы других пользователей.
2. Если вам что-то непонятно - спрашивайте, не забывая написать, что именно и с какого места.
Показаны все комментарии
Чтобы оставить свой комментарий, авторизуйтесь, пожалуйста!    
     
belarusweb.net © Петр Романовский, Минск, 2016-2017.
Связаться с автором
Наверх