Array (“один”, “два”, “три”, “четыре”, “пять”) — КиберПедия 

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Array (“один”, “два”, “три”, “четыре”, “пять”)

2017-09-27 235
Array (“один”, “два”, “три”, “четыре”, “пять”) 0.00 из 5.00 0 оценок
Заказать работу

);

dumper($my_array);

?>

На экран будет выведено:

 

Array[3]

0 => Array[5]

0 => "1"

1 => "2"

2 => "3"

3 => "4"

4 => "5"

1 => Array[5]

name => "Владимир"

fam => "Кузнецов"

year => "1995"

month => "май"

day => "15"

2 => Array[5]

0 => "один"

1 => "два"

2 => "три"

3 => "четыре"

4 => "пять"

Функции для работы со строками

Для работы со строками в PHP имеется много полезных функций:

1.

strlen(строка) определение текущей длины строки, включая служебные символы (перевод строки, табуляция):

 

$str = “Привет всем!”;

$dlina = strlen($str); // $n=12

2.

trim(строка) удаление ведущих и заключительных пробелов,

ltrim(строка) удаление только ведущих пробелов,

rtrim(строка) удаление только заключительных пробелов

 

3.

strchr(строка, символ) возвращает часть строки, начиная с указанного символа и до конца строки; если символ не найден, то возвращает false (учитываются регистры символа и строки):

$str =”Vasja Pupkin”;

$poisk = strchr($str, “u”); // $poisk = “upkin”

4.

stristr(строка, символ) возвращает часть строки, начиная с указанного символа и до конца строки; если символ не найден, то возвращает false (регистры символа и строки не учитываются)

 

5.

strrchr(строка, символ) возвращает часть строки, начиная с указанного символа и до конца строки; поиск идет с конца строки; если символ не найден, то возвращает false (учитываются регистры символа и строки):

$str =”Vasja Pushkin”;

$poisk = strrchr($str, “s”); // $poisk = “shkin”

6.

strpos(строка1, строка2) возвращает позицию первого вхождения второй строки в первую; если строка не найдена, то возвращает false; нумерация позиций начинается с нуля:

$str =”Vasja Pushkin”;

$poisk = strpos($str, “sh”); // $poisk = 8

 

7.

strrpos(строка1, строка2) возвращает позицию последнего вхождения второй строки в первую; если строка не найдена, то возвращает false; нумерация позиций начинается с нуля:

$str =”Маша шагает в шапке”;

$poisk = strrpos($str, “ша”); // $poisk = 14

 

8.

substr(строка, число1, число2) возвращает подстроку, начинающуюся с позиции число1 и длиной число2; нумерация позиций начинается с нуля:

$str =”Маша шагает в шапке”;

$poisk = substr($str, 5, 3); // $poisk = “шаг”

 

9.

str_replace(строка1, строка2, строка) заменяет в строке все вхождения строки1 на строку2:

$str =”Она красавица из красавиц”;

$poisk = str_replace(“красав”, “умн”, $str);

// $poisk = “Она умница из умниц”

 

10.

str_repeat(строка, число) повторяет строку заданное количество раз и возвращает ее

11.

strrev(строка) переворачивает строку (“ поплавок ”) и возвращает ее

 

12.

str_word_count(строка, цифра) возвращает массив слов, входящих в строку или количество слов в строке, если второй параметр неуказан;

цифра=1: числовые индексы элементов массива соответствуют порядковому номеру слова в строке (нумерация начинается с нуля),

цифра=2: числовые индексы элементов массива соответствуют позиции слова в строке (нумерация начинается с нуля):

$privet = “How do you do”;

$n = str_word_count($privet); // $n=4

$my_array = str_word_count($privet, 1);

/*

my_array

(

[0] => How

[1] => do

[2] => you

[3] => do

)

*/

$my_array = str_word_count($privet, 2);

/*

my_array

(

[0] => How

[4] => do

[7] => you

[11] => do

)

*/

Регулярные выражения

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

Язык регулярных выражений – это язык составления шаблонов. В PHP поддерживаются два стандарта шаблонов – POSIX -совместимые регулярные выражения и Perl -совместимые регулярные выражения (PCRE).

Рассмотрим формирование шаблонов с помощью языка PCRE.

Шаблон регулярного выражения – это строка, состоящая из простого текста и метасимволов, которые позволяют находить соответствие нескольким символам одновременно:

\d соответствует цифре,

\D соответствует нецифровому символу,

\s соответствует пробельному символу, символу табуляции, символу новой строки,

\S не соответствует вышеназванным символам,

\w соответствует латинской или русской букве, цифре или подчеркиванию,

\W соответствует любому символу, кроме русской или латинской буквы, цифры или подчеркивания,

. любой символ, кроме символа новой строки.

Для проверки на соответствие регулярному выражению используется функция:

 

preg_match(шаблон, строка)

Функция возвращает 1, если найдет соответствие шаблону в строке хотя бы один раз, в противном случае возвращает 0. Шаблон записывается как переменная строкового типа, а само значение шаблона помещается в разделители – знаки деления (прямые слэши):

 

$str = ”abc5dr35f”;

//определяем наличие хотя бы одной цифры встроке

$pattern = ’/\d/’;

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

Базовые классы метасимволов предназначены для поиска одного единственного символа в строке. Для какого-либо полезного их применения язык регулярных выражений надо дополнить обозначениями того, сколько раз метасимволы могут встречаться в строке – операторами счетчиков символов (квантификаторами):

* повторение символа ноль или более раз /\w*/

+ повторение символа один или более раз /\w+/

? повторение предыдущего символа ноль или один раз /\d?/

{n} ровно n вхождений символа /\d{5}/

{n,}n или больше вхождений символа /\w{3,}/

{,n}n или меньше вхождений символа /\d{,5}/

{m,n} не менее чем m и не более чем n вхождений символа /\d{2,5}/

 

Найдем в исходной строке пять цифр, за которыми следует дефис, а затем еще четыре цифры:

 

$str = ”abc12345-1234dr35f”;

$pattern = ’/\d{5}-\d{4}/’;

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

При этом символы, не входящие в число метасимволов, например дефис, рассматриваются просто как текстовый символ, который нужно найти. Если поставить в этой строке между пятеркой и дефисом пробел, то функция не найдет совпадения с шаблоном.

Функция preg_match() ищет совпадение с шаблоном по всему тексту. Если необходимо, чтобы шаблон находился именно в начале исходной строки, то необходимо добавить символ привязки к начальной позиции ^:

$str = ”13312345-1234dr35f”;

$pattern = ’/^\d{5}/’; // пять цифр в начале строки

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

 

На конец строки указывает метасимвол $:

$str = ”13312345-1234dr12345f”;

$pattern = ’/\d{5}$/’; // пять цифр в конце строки

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 0

 

$str = ”13312345-1234dr12345”;

$pattern = ’/\d{5}$/’; // пять цифр в конце строки

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

 

Если необходимо найти строку, состоящую исключительно из символов, соответствующих шаблону, то необходимо использовать эти метасимволы совместно:

$str = ”13312345-1234dr12345”;

$pattern = ’/^\d{5}$/’; // только пять цифр в строке

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 0

 

$str = ”1234512345”;

$pattern = ’/^\d{5}$/’; // только пять цифр в строке

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 0

 

$str = ”54321”;

$pattern = ’/^\d{5}$/’; // только пять цифр в строке

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

Можно создавать собственныеклассы символов, помещая символы в квадратные скобки. Допускается указывать диапазоны значений. Например, чтобы создать класс для обозначения шаблона соответствия одной из цифр от 3 до 5, можно использовать [3-5]:

$str = ”4678891”;

$pattern = ’/[3-5]{1}[6-8]{4}/’;

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

Искали одно вхождение цифр от 3 до 5 и четыре вхождения цифр от 6 до 8. Нашли строку “46788”.

 

$str = ”ABC dkfd884sxRST”;

$pattern = ’/[a-z348]+/’;

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

Искали строчные латинские буквы или цифры 3, 4, 8. Нашли строку “dkfd884sx”.

Если не поставить знак «плюс» (повторение символов один или более раз) после закрывающей квадратной скобки, то будет найдена строка, состоящая только из одной буквы – “d”.

Символ вертикальной черты | используется для разделения альтернативных вариантов. Например, шаблон ‘город|село’ означает, что ищется любое слово - ‘город’ или ‘село’:

$str = ”Я проживаю в городе Иркутске”;

$pattern = ’/город|село/’; // или город или село

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

Допустимо указывать любое количество альтернатив. В процессе поиска соответствия просматриваются все перечисленные альтернативы слева направо до первого найденного соответствия.

Шаблоны могут работать по-разному в зависимости от модификаторов, которые добавляются после закрывающего шаблон разделителя. Самый известный модификатор:

i (ignore case)не различать строчные и прописные буквы:

 

$str = ”Я НЕ ВЫКЛЮЧИЛ CAPS LOCK”;

$pattern = ’/[а-я]/i’; // c модификатором

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 1

 

$str = ”Я НЕ ВЫКЛЮЧИЛ CAPS LOCK”;

$pattern = ’/[а-я]/’; // без модификатора

$value = preg_match($pattern, $str);

echo '$value = ', "$value <BR>"; // $value = 0

Можно не только узнать, имеется ли в исходной строке подстрока, соответствующая шаблону, но и получить эту подстроку. Для этого в качестве третьего параметра функции preg_match() задается имя массива. Нулевой элемент этого массива-списка будет содержать найденную подстроку:

$str = ”Злой браконьер охотился на зайчиков”;

$pattern = ’/конь|лошадь/i’; // или конь или лошадь

$value = preg_match($pattern, $str, $matches);

echo '$value = ', "$value <BR>"; // $value = 1

echo $matches[0], “<BR>”; // конь

Для разбиения строки на отдельные слова используется функция preg_split(). Ее действие аналогично действию функции explode(), но в качестве разделителей слов можно использовать не один, а несколько различных символов. Функция возвращает массив-список:

$fruit = ”яблоки, апельсины, персики и лимоны”;

$pattern = ’/, | и /’; // запятая с пробелом или и в пробелах

$fruit_array = preg_split($pattern, $fruit);

foreach ($fruit_array as $index=>$value)

{

echo “$index => $value <BR>”;

}

На экран будет выведено:

0 => яблоки
1 => апельсины
2 => персики
3 => лимоны

По умолчанию регулярные выражения соответствуют максимально возможному количеству символов в строке:

/к.*т/ - поиск строки произвольной длины, начинающейся буквой к и заканчивающейся последней найденной буквой т (не в смысле последним символом в строке):

$str = “кот кит корт кант”;

$pattern = ’/к.*т/’;

$value = preg_match($pattern, $str, $matches);

echo '$value = ', "$value <BR>"; // $value = 1

echo $matches[0], “<BR>”; // кот кит корт кант

Если после любого квантификатора поставить знак вопроса?, то можно ограничить количество найденных символов:

/к.*?т/ - поиск строки произвольной длины, начинающейся буквой к и заканчивающейся первой найденной буквой т:

$str = “кот кит корт кант”;

$pattern = ’/к.*?т/’;

$value = preg_match($pattern, $str, $matches);

echo '$value = ', "$value <BR>"; // $value = 1

echo $matches[0], “<BR>”; // кот

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

$str = ”Дата моего рождения – 19.09.1949”;

$pattern = ’/([0-9]{2}).([0-9]{2}).([0-9]{4})/’; //дата рождения

$value = preg_match($pattern, $str, $matches);

echo '$value = ', "$value <BR>"; // $value = 1

foreach($matches as $index=>$value)

{

echo “$index => $value”;

echo “<BR>”;

}

На экран будет выведено:

$value = 1
0 => 19.09.1949
1 => 19
2 => 09
3 => 1949

Таким образом, в нулевой элемент массива снова помещается найденная подстрока, а в остальные элементы – фрагменты этой подстроки согласно номерам подшаблонов (по номеру открывающей круглой скобки перед подшаблоном):

([0-9]{2}) - первый подшаблон,

([0-9]{2}) - второй подшаблон,

([0-9]{4}) - третий подшаблон.

Регулярные выражения также позволяют выполнять замену фрагментов строк. Для этого используется функция:

preg_replace(шаблон, подстрока-замена, исходная строка)

Вторым аргументом вместо подстроки-замены могут быть ссылки на подшаблоны вида \n (n – номер подшаблона):

 

$str = ”Здесь всего четыре слова”;

echo $str, “<BR>”;

$pattern = ’/(всего)\s\w+\s(слова)/i’;

$new_str = preg_replace($pattern, ‘\три 2\ ’, $str);

echo $new_str, “<BR>”;

 

На экран будет выведено:

Здесь всего четыре слова
Здесь всего три слова

 

Шаблон в этом примере составлен так, что сначала в тексте ищется слово “всего” – первый подшаблон (1), потом после пробела могут идти одна или несколько букв или цифр, а затем “слова” – второй подшаблон. Эти подшаблоны упоминаются во втором аргументе в виде цифр, перед которыми стоит слэш. Функция находит соответствие шаблону в тексте и заменяет найденный фрагмент значением второго аргумента, подставив в него найденные подшаблоны.

 

Автономные функции

В PHP можно создавать функции в процессе выполнения сценария. Поскольку такие функции не имеют самостоятельных имен (ссылку на них сохраняют в переменных или передают другим функциям), она называются автономными.

Для создания автономных функций предусмотрена функция:

create_function(‘список формальных параметров’, ‘тело функции’);

Создадим автономную функцию, суммирующую две переменные:

$my_summa = create_function(‘$x, $y’, ‘{$z = $x + $y; return $z;}’);

$s = $my_summa(3, 5);

echo “$s <BR>”; // $s=8

Внимание! Формальные параметры функции create_function() заключаются в одиночные кавычки! Перед закрывающей скобкой тела функции } обязательно поставить точку с запятой!

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

Файлы

В общем случае файлом называется последовательность некоторых однотипных информационных компонентов, сохраняемая во внешней памяти компьютера под одним именем. На этом основании файл считается структурой данных.

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

Существуют задачи, для которых заранее невозможно определить количество выходных или входных данных. Оно определяется только в процессе решения конкретной задачи, то есть при работе программы. Поэтому возникла необходимость в специальной структуре данных, которая представляла бы собой последовательность компонентов, в общем случае разнотипных, причем длина этой последовательности заранее не определялась, а конкретизировалась при выполнении программы. К тому же, эта структура данных должна была бы храниться не в оперативной памяти компьютера, а на внешних устройствах.

В современных алгоритмических языках такую структуру данных называют файлом.

Файл – это упорядоченная совокупность однотипных элементов, имеющая произвольную длину, прямой или последовательный доступ.

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

Файлы, используемые в PHP, делятся на физические (внешние) и логические (внутренние). Физические файлы являются средствами обмена данными и хранятся на внешних носителях. Это единственная структура, посредством которой данные, обрабатываемые программой, могут быть получены извне, а результаты работы программы могут быть переданы во внешний мир и сохранены.

Таким образом, физические (внешние) файлы сохраняются после окончания работы программы, их создавшей, и данные, записанные в них, могут быть использованы для дальнейшей работы.

Логические файлы хранятся в оперативной памяти компьютера во время работы программы, их создавшей, и стираются после окончания ее работы. На логическом уровне в качестве информационных компонентов файлов могут выступать любые структуры данных: числа, символы, строки, массивы. На физическомуровне универсальным информационным компонентом любого файла является байт. Иначе говоря, содержимое любого файла представляет собой последовательность байтов.

Взаимоотношения данной программы с последовательностью байтов данного файла могут строиться по-разному, в зависимости от того, каким определен тип файла в программе.

В PHP, как и в Си, различают два типа внешних файлов:

1. текстовые

2. бинарные (двоичные)

Текстовые файлы

Текстовые файлы представляют собой последовательность строк различной длины, каждая из которых заканчивается ESC-последовательностью \n – конец строки. В конце файла стоит метка EOFEnd Of File.

Перед началом работы с файлом его необходимо открыть:

$fp = fopen(“путь”, “режим”);

где $fpуказатель (дескриптор) на файл – имя логического файла (файловая переменная),

путь – полный путь к файлу на внешнем носителе,

режим – режим открытия файла:

rt – чтение (read, text – текстовый): существующий файл открывается только для чтения. Если файла не существует, то функция fopen() возвращает false. После удачного открытия указатель устанавливается в начало файла.

wt – запись (write): создается новый пустой файл. Если файл с указанным именем существовал, то он очищается. В случае неверно заданного имени файла функция fopen() возвращает false.

at – добавление в конец файла (append): открывает существующий файл в режиме записи и ставит указатель в конец файла. Если файла не существует, то функция fopen() возвращает false.

rt+ - чтение с обновлением (r + w): существующий файл открывается одновременно для чтения и записи, указатель устанавливается в начало файла. Новые данные записываются поверх существующих, а не раздвигают их. Если файла не существует, то функция fopen() возвращает false.

wt+ - запись с обновлением: открывается существующий файл, одновременно он очищается. Далее режим аналогичен r+: с файлом можно работать как в режиме чтения, так и записи.

at+ - добавление с обновлением: открывает файл в режиме чтения и записи, указатель устанавливается в конец файла, содержимое файла не уничтожается. Если указанный файл не существует, то создается новый пустой файл. Режим полезен, когда нужно что-то дописать в конец файла, и неизвестно, существует он или нет.

В случае удачного открытия файла функция fopen() возвращает дескриптор файла и true, в случае неудачи – false.Дескриптор файла служит идентификатором файла и используется операционной системой для операций с ним.

Перед работой с файлом следует проверить, открыт ли он:

if ($fp = fopen(“путь”, “режим”))

{


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

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

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.134 с.