Строкой
(string) называется последовательность символов, которая рассматривается как единое
целое, но при этом обеспечивает доступ к отдельным символам. Примеры строк: thesaurus 49ers abc &%/$# Обратите
внимание: в РНР не поддерживается символьный тип данных. Строковый тип может рассматриваться
как единое представление для последовательностей, состоящих из одного или нескольких
символов. Строковое присваивание Строки делятся на две категории в
зависимости от типа ограничителя - они могут ограничиваться парой кавычек ("
") или апострофов (' '). Между этими категориями существуют два принципиальных
различия. Во-первых, имена переменных в строках, заключенных в кавычки, заменяются
соответствующими значениями, а строки в апострофах интерпретируются буквально,
даже если в них присутствуют имена переменных, Два следующих объявления
дают одинаковый результат: $food = "meatloaf"; $food = 'meatloaf'; Однако
результаты следующих объявлений сильно различаются: $sentence = "My
favorite food is $food"; $sentence2 = 'My favorite food is $food'; Переменной
$sentence присваивается строка My favorite food is meatloaf. Обратите
внимание: переменная $food автоматически интерпретируется. С другой стороны, переменной
$sentence2 присваивается строка My favorite food is $food. В отличие
от переменной $sentence, в $sentence2 осталась не интерпретированная переменная
$food. Различия обусловлены использованием кавычек и апострофов при присваивании
переменным $sentence и $sentence2. Прежде чем рассматривать второе фундаментальное
различие между строками, заключенными в апострофы и в кавычки, необходимо познакомиться
со служебными символами, используемыми в строках РНР. В РНР, как и в большинстве
современных языков программирования, строки могут содержать служебные символы
(например, символы табуляции или новой строки), перечисленные в табл. 2.1. Таблица
2.1. Служебные символы в строках Последовательность Смысл \n Новая
строка \r Возврат курсора \t Горизонтальная табуляция \\ Обратная
косая черта \$ Знак доллара \" Кавычка \[0-7]{1,3} Восьмеричная
запись числа (в виде регулярного выражения) \x[0-9A-Fa-f]{l,2} Шестнадцатиричная
запись числа (в виде регулярного выражения) Второе принципиальное различие
заключается в том, что в строках, заключенных в кавычки, распознаются все существующие
служебные символы, а в строках, заключенных в апострофы, - только служебные символы
<\\> и <\>. Следующий пример наглядно демонстрирует различия между
присваиванием строк, заключенных в кавычки и апострофы:
$double_list = "item1\nitem2\nitem2"; $single_list
= 'item1\nitem2\nitem2'; Если вывести обе строки в браузере, окажется, что
строка в кавычках содержит внутренние символы новой строки, а в строке в апострофах
последовательность \n выводится как обычные символы. Хотя многие служебные символы
в браузерах несущественны, при форматировании для других условий они играют очень
важную роль. Помните об этом, выбирая между кавычками и апострофами, и вам удастся
избежать многих неожиданностей. Синтаксис встроенной документации Второй
вариант синтаксиса ограничения строк, представленный в HTML4, называется встроенной
документацией (here doc). В этом варианте синтаксиса строка начинается с символов
<<<, за которыми следует некоторый идентификатор по вашему выбору, затем
строка, присваиваемая переменной. Конструкция заканчивается вторым экземпляром
того же идентификатора. Пример: $paragraph = <<<DELIM This
is a string that Will be interpreted exactly As it is written in the variable
assignment, DELIM; Выбранный идентификатор не должен присутствовать
в присваиваемой строке. Более того, первый символ завершающего идентификатора
должен находиться в первом столбце строки, завершающей конструкцию. Обращение
к отдельным символам строк К отдельным символам строки можно обращаться
как к элементам массива с последовательной нумерацией (см. следующий раздел).
Пример: $sequence_number = "04efgh"; $letter = Ssequence_number[4]; Переменной
$ letter будет присвоено значение g. Как вы узнаете из следующего раздела, в РНР
нумерация элементов массивов начинается с 0. Соответственно, выражение $sequence_number[l]
будет равно 4. |