Разработчику. Сборник рецептов PHP
Задавайте вопросы

Строки

Вернуться назад

Введение

Строки в PHP – это последовательность символов, такая как «We hold these truths to be self evident», или «Жил да был», или даже «111211211». При чтении из файла или выводе в броузер данные представляются в виде строк.

Отдельные символы можно считать элементами индексированного массива, как в C. Первый символ в строке имеет нулевой индекс. Например:

$neighbor = 'Hilda';
print $neighbor[3];
d

Однако строки в PHP отличаются от строк в C тем, что они могут быть бинарными (то есть могут содержать символ NULL) и могут произвольно менять свой размер, который ограничен лишь объемом доступной памяти.

Строки можно задавать тремя способами: в одинарных кавычках, в двойных кавычках и в формате встроенного документа (heredoc). При использовании одинарных кавычек следует экранировать только два специальных символа: обратную косую черту и саму одинарную кавычку:

print 'I have gone to the store.';
print 'I\'ve gone to the store.';
print 'Would you pay $1.75 for 8 ounces of tap water?';
print 'In double quoted strings, newline is represented by \n';

I have gone to the store.
I've gone to the store.
Would you pay $1.75 for 8 ounces of tap water?
In double
quoted strings, newline is represented by \n
(В строках с двойными кавычками символ новой строки представлен \n)

Задавать строки в одинарных кавычках проще и быстрее, поскольку в этом случае PHP не проверяет наличие переменных или почти всех escape-последовательностей. Строки в двойных кавычках не распознают escape-код одинарной кавычки, но распознают вставленные в строку переменные и escape-последовательности, представленные в таблице:

Escape-последовательность Символ
\n Новая строка (ASCII 10)
\r Возврат каретки (ASCII 13)
\t Табуляция (ASCII 9)
\\ Обратная косая черта
\$ Знак доллара
\" Двойные кавычки
\{ Левая фигурная скобка
\} Правая фигурная скобка
\[ Левая скобка
\] Правая скобка
от \0 до \777 Восьмеричное значение
от \x0 до \xFF Шестнадцатеричное значение

print "I've gone to the store.";
print "The sauce cost \$10.25.";
$cost = '$10.25';
print "The sauce cost $cost.";
print "The sauce cost \$\061\060.\x32\x35.";

I've gone to the store.
The sauce cost $10.25.
The sauce cost $10.25.
The sauce cost $10.25.

Последняя строчка кода печатает цену соуса правильно, поскольку символ 1 имеет десятичный ASCII-код 49 и восьмеричный код 061. Символ 0 имеет десятичный ASCII-код 48 и восьмеричный код 060; 2 имеет десятичный ASCII-код 50 и шестнадцатеричный код 32; а 5 имеет десятичный ASCII-код 53 и шестнадцатеричный код 35.

Строки встроенного документа распознают все те вхождения и escape-коды, что и строки в двойных кавычках, но при этом они допускают использование двойных кавычек. Встроенный документ начинается с <<< и метки. Эта метка (без ограничивающих ее пробельных символов) с точкой с запятой в конце оператора (если это необходимо) заканчивает встроенный документ. Например:

print <<< END
It's funny when signs say things like:
Original "Root" Beer
"Free" Gift
Shoes cleaned while "you" wait
or have other misquoted words.
END;

It's funny when signs say things like:
Original "Root" Beer
"Free" Gift
Shoes cleaned while "you" wait
or have other misquoted words.

При использовании встроенного документа сохраняются новые строки, интервалы и кавычки. Метка конца строки чувствительна к регистру, и согласно принятому соглашению она записывается в верхнем регистре. Таким образом, следующее выражение правильное:

print <<< PARSLEY
It's easy to grow fresh:
Parsley
Chives
on your windowsill
PARSLEY;

Как и следующее

print <<< DOGS
If you like pets, yell out:
DOGS AND CATS ARE GREAT!
DOGS;

Встроенный документ удобен при выводе на печать документа HTML с включенными в него переменными:

if ($remaining_cards > 0) {
      $url = '/deal.php';
      $text = 'Deal More Cards';
} else {
      $url = '/new game.php';
      $text = 'Start a New Game';
}
print <<< HTML
There are <b>$remaining_cards</b> left.
<p>
<a href="$url">$text</a>
HTML;
</p>

Здесь точка с запятой после ограничителя конца строки необходима, поскольку она сообщает PHP о конце оператора. Однако в некоторых случаях точку с запятой ставить не надо:

$a = <<< END
Once upon a time, there was a
END
. ' boy!';
print $a;

Once upon a time, there was a boy!

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

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ