|
действует принцип: чем меньше в про-
грамме собственноручно реализованных функций, тем надежнее она будет работать и
тем меньше ее придется тестировать.
ЧАСТЬ IV.
СТАНДАРТНЫЕ
ФУНКЦИИ PHP
Глава 12
Строковые функции
Строки в PHP — одни из самых универсальных объектов. Как мы уже видели, любой,
сколь угодно сложный объект можно упаковать в строку при помощи функции
Serialize() (и обратно через Unserialize()). Строка может содержать абсолют-
но любые символы с кодами от 0 до 255 включительно. Нет никакого специального
маркера "конца строки", как это сделано в Си (там конец строки помечается
симво-
лом с нулевым кодом). А значит, длина строки во внутреннем представлении PHP
хранится где-то отдельно. Для формирования и вставки непечатаемого символа в
строку (например, с кодом 1 или 15) используется функция chr(), которую мы рас-
смотрим ниже.
Наконец, из-за слабого контроля типов в PHP строка может содержать
(и часто содержит) число, причем с ней можно работать, как с числом: прибавлять
другие числа, умножать и т. д. При этом все преобразования (в десятичной
системе)
производятся автоматически. Существуют также функции, преобразующие число,
записанное в различных системах счисления (например, в восьмеричной), в обычное
представление, и наоборот. Их мы обсудим позже, в следующей главе.
В этой главе я описываю только самые употребительные и удобные функции
(около 80%), пропуская все остальные. Какие-то из не вошедших в данную гла-
ву функций (например, quotemeta()) мы будем рассматривать в других гла-
вах — там, где это показалось мне наиболее логичным. Так что, не найдя опи-
сание интересующей вас функции здесь, подумайте: возможно, оно лучше
подходит для другой темы и его лучше поискать там? И, наконец, последней
инстанцией для вас, конечно же, должна являться документация PHP.
Конкатенация строк
Самая, пожалуй, распространенная операция со строками — это их конкатенация,
или присоединение к одной строке другой. В ранних версиях PHP для этого, как и
для
сложения чисел, использовался оператор +, что постоянно приводило к путанице:
ес-
ли к числу прибавляется строка, что должно получиться — число или строка? Если
число, то вдруг наша строка содержала на самом деле не число, а какой-то текст?
В
новой — третьей — версии интерпретатора разработчики отказались от этого меха-
низма и объявили, что + следует применять только для сложения чисел, и никак
ина-
Глава 12. Строковые функции 207
че. Что же касается конкатенации строк, то для нее ввели специальный оператор ".
"
(точка).
Оператор "." всегда воспринимает свои операнды как строки и возвращает строку.
В
случае, если один из операндов не может быть переведен в строковое
представление,
т. е. если это массив или объект, то он воспринимается как строки array и
object
соответственно. Вообще говоря, это правило применимо и не только при сцеплении
строк, но и при передаче такого операнда в какую-нибудь стандартную функцию,
ко-
торой требуется строка. Например, следующие команды выведут слово array:
$a=array(10,20,30);
echo $a // Внимание! Неожиданный результат!
Есть и другой, более специализированный, способ конкатенации строк. Он обычно
используется, когда значения строковых или числовых переменных перемежаются с
обычными словами. Если, к примеру, у нас в $day хранится текущее число, в
$month — название месяца и в $year — год, то вывести строку вида "Сегодня 8 мая
2000 года" можно так:
echo "Сегодня $day $month $year года";
При этом в строку, вырабатываемую инструкцией echo, автоматически в нужных
местах вставятся значения наших переменных. Это позволяет констатировать тот
факт, что в PHP все переменные начинаются с $.
О сравнении строк
и инструкции if-else
Теперь я хотел бы рассмотреть одно тонкое место в интерпретаторе PHP,
касающееся
немного неправильной работы со строками. Заключается оно вот в чем. Если мы ис-
пользуем операторы сравнения == и != (или любые другие, которые могут потребо-
вать перевода строки в число) с операндами-строками, то результат, вопреки
ожида-
ниям, не всегда оказывается верным. Чаще всего э
|
|