Анонсы:
|
PHP. Урок 6 Обработка строкУрок 6. Обработка строкВ этом уроке вы узнаете о мощных функциях для обработки строк, которые есть в языке PHP. Анатомия строкиСтрока – это набор символов, которые рассматриваются как один объект. В PHP строки заключаются в кавычки. Поэтому для того, чтобы определить строку, нужно присвоить переменной строчку, заключенную в одиночные или двойные кавычки. Два выражения ниже идентичны. Оба создают переменную $phrase, которая содержит строку справа: Символы кавычек. В PHP кавычки не указывают направления. Один и тот же символ указывает на начало и завершение строки. Для строк нельзя использовать символ апострофа (`). Вместо этого используется одинарная кавычка ('). Выделение специальных символов обратной косой чертойВ одиночных кавычках можно использовать двойные, и наоборот. Например, две строки ниже – корректные: Но для того, чтобы использовать ту же кавычку внутри строки, нужно поставить перед ней обратную косую черту. В следующем примере показывается этот механизм: Если в примерах выше не выделить кавычку обратной косой чертой, PHP обнаружит несоответствие кавычек и выдаст ошибку. Какой стиль кавычек использовать, зависит от личных предпочтений и сказывается на аккуратности кода. Но, как показано в уроке 2, “Переменные”, в строках, заключенных в двойные кавычки, заменяются знак доллара и имя переменной на соответствующее значение, а в одиночных кавычках такая структура трактуется как обычный текст. Для того чтобы вывести знак доллара в строке, заключенной в двойные кавычки, достаточно поставить перед ним обратную косую черту. Например, две строки ниже полностью эквивалентны: Если не выделить обратной косой чертой символ доллара во второй строке, PHP попытается найти переменную $10, которая к тому же имеет некорректное имя. Чтобы вставить общие непечатные ASCII-символы, используются стандартные комбинации символов с обратной косой чертой. Символ новой строки это \n, табуляция - \t и т.п. Получить полный список можно с помощью команды man ascii (на Unix-подобной системе) или на сайте – www.ascii.cl. КонкатенацияВыше показано, как с помощью оператора конкатенации (точки) можно объединять строки в одну. Комбинированная версия этого оператора (.=) позволяет добавить значение к окончанию данной строки. В примере ниже поэтапно создается строка и выводиться на экран: Как и ожидалось, появится полное предложение. Пробелы после слов хочу, изменить и мир сделаны для того, чтобы они на слились в одно слово. Сравнение строкСтроки можно сравнивать с помощью стандартных операторов сравнения. Чтобы убедиться в равности двух строк, используется знак двойного равенства (==): При сравнении строк оператор сравнения выполняет зависимую от регистра проверку. Поэтому проверка не сработает, если в переменной $password находится, к примеру слово ПаРоль. Другие операторы сравнения - <, <=, > и >= - выполняют сравнение на основе ASCII-значения каждого символа в строке. Проверка ниже разделяет людей на две группы, в зависимости от начальной буквы фамилии: первая от А до М и вторая от N до Z: ASCII-значения. Так как сравнение строк производится на основе ASCII-значений, все символы в нижнем регистре имеют большее значение, чем эквивалентные в верхнем. Символы a-z лежат в диапазоне 97-122, а символы A-Z занимают диапазон 65-90. Форматирование строкВ PHP легко создавать форматированные строки с помощью функций printf и sprintf. Эти функции похожи на аналогичные в языке С, но в PHP есть некоторые отличия. Возможности printfФункция printf используется для вывода форматированной строки. В самом простом случае на вход printf передается строка, и он выводит ее так же, как и echo: Сила printf заключается в том, что она позволяет подставлять вместо специальных комбинаций – спецификаторов формата нужные значения. Чтобы задать спецификатор, используется знак процента (%) и символ, который задает формат заменяемого значения. В следующем примере используется спецификатор формата %f, для числа с плавающей точкой: Второй параметр printf заменяет спецификатор %f, и на выходе получаем: Функция printf не имеет ограничений на количество заменяющих значений. Главное, чтобы количество спецификаторов формата и заменяемых значений совпадало. В примере ниже показывается этот механизм и подставляется строчное значение: В табл. 6.1 показаны форматирующие символы, которые применяются в функции printf для разных типов значений. Пусть вместо спецификатора %f иcпользуется %d, чтобы вывести значение $price: В этом случае PHP рассматривает значение аргумента как целое, и от чесла берется только целая часть. На выходе получим: Таблица 6.1. Форматирующие символы printf
Десятичный. Формат %d представляет десятичное целое. Десятичное –говорит т том, что используется десятичная система счисления (т.е. по основанию 10), а не то, что в числе есть десятичная точка. Существуют различные форматы для отображения чисел по основанию 16 (шестнадцатеричный, %x), 8 (восьмеричный, %o) и 2 (двоичный, %b). Форматирующие кодыСпецификаторы формата также устанавливают необязательные параметры: отступ, выравнивание, ширину и точность выводимого значения. Это позволяет выполнять довольно сложное форматирование. Спецификатор ширины указывает, сколько символов отводится в строке на вывод форматируемого значения. Он ставится между знаком проценты и спецификатором типа. Пример ниже позволяет убедиться, что выводимое имя занимает ровно десять знакомест: Отступ. В этом примере используется дескриптор <PRE>, чтобы вывести на экран пробелы перед именем. Потому что без него браузер рассматривает несколько пробелов как один. Запустив этот пример, можно убедиться что перед всеми именами есть отступ слева на соответствующее число символов. В результате получаем список имен с выравниванием по правому краю. По умолчанию выравнивание идет справа на заданную ширину. Но это можно изменить с помощью знака минус перед значением ширины. Выравнивание по левому краю в предыдущем примере будет выполняться, если задать спецификатор формата в виде %-10s. Но, по сути, такой же формат генерирует такой же вид, как простой %s. Строка получит отступ в десять символов справа. Символ пробела для отступа можно заменить на любой. Для этого нужно поставить одиночную кавычку и нужный символ перед значением ширины. В следующем примере показывается, как число из пяти цифр заполняется нулями: На выходе получим: Спецификатор точности используется для чисел с плавающей точкой, чтобы задать количество символов после точки, и наиболее часто применяется для денежных значений. Таким образом, даже имея целое значение, всегда получим две цифры для копеечных значений. Спецификатор точности следует через точку после необязательного спецификатора ширины. В примере ниже %.2f используется для денег и задает два знака после точки, а необязательный спецификатор ширины не используется: Ниже показан отформатированный вывод: Ширина чисел с плавающей точкой. Для чисел с плавающей точкой спецификатор ширины задает количество символов перед точкой. Например, %62f состоит из девяти символов вместе с точкой и двумя числами после нее. Возможности sprintfФункция sprintf используется для того, чтобы присвоить форматированную строку переменной. Синтаксис полностью аналогичен printf, но вместо вывода на экран, функция возвращает строку как результат. Например, для того, чтобы присвоить значение цены новой переменной, нужно сделать следующее: Функции printf и sprintf имеют одинаковые спецификаторы формата. Строковые функцииРассмотрим доступные в PHP функции для работы со строками. Переключение регистраМожно переключать регистр строки из строчного в заглавный, и наоборот, с помощью функций strtoupper или strtolower соответственно. Пример ниже показывает этот механизм на строке со словами в разном регистре: На выходе получим: Для перевода первой буквы в верхний регистр используется функция ucfirst: Для перевода первой буквы каждого слова в верхний регистр (полезно в случае ФИО) используется функция ucwords: Функции ucfirst и ucwords изменяют только первый символ и не следят за регистром остальных. Поэтому, если вся строка находится в верхнем регистре, может выйти не то, что ожидается. Чтобы добиться нужного эффекта, необходимо скомбинировать их с функцией strtolower, как показано в примере ниже: Разбивка строкиФункция substr позволяет извлечь часть строки. Для этого нужно задать точку отсчета и необходимую длину. В следующем примере показано, как это работает: Функция substr возвращает часть переменной $phrase начиная с четвертой позиции, длиной в пять символов. Отметим, что отсчет позиции начинается с нуля, а не с единицы. Поэтому на выходе получим блю P. Если не указать длину, возвращается подстрока от заданной позиции до конца строки. Следующий пример выводит люблю PHP для переменной $phrase: Если стартовая позиция — отрицательное число, то функция substr начинает отсчет с конца сроки. В примере ниже на экран выводится три последних символа строки, в данном случае — PHP: Для того чтобы узнать длину строки, используется функция strlen: Чтобы найти позицию символа или строки в другой строке, используется функция strpos. Первый аргумент содержит "где искать", а второй "что искать". В следующем примере выводится позиция символа @ в электронном адресе: Позиция в строке. Нужно помнить, что позиция символа в строке отсчитывается с левого края и начинается с нуля. Позиция 1 соответствует второму символу в строке. Когда strpos находит искомую последовательность в начале строки, на выходе получим ноль. Но когда искомой комбинации не обнаружено, - на выходе получим FALSE. Функция strstr извлекает часть строки от совпадающей позиции и до конца строки. Эта функция создана для удобства, чтобы не использовать комбинацию strpos и substr. Два следующих выражения полностью эквивалентны: РезюмеВ этом уроке вы научились работать со строками с помощью PHP. В следующем уроке вы узнаете о том, что такое массивы и какие операции с ними можно выполнять. |
Погода в Рудне на 13 Окт 2024 г. 704 - Вьетнамских донгов - 1 |