Основы PHP. Сериализация презентация

Содержание

Слайд 2

Основы PHP Урок №4

Сериализация массива

Сериализация – это процесс перевода какой-либо структуры данных в

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

ОСНОВЫ PHP

2

string serialize (mixed value)
serialize() возвращает строку с байтово-поточным представлением значения value, которое может храниться где угодно.
mixed unserialize (string str)
unserialize() принимает одну сериализованную переменную и конвертирует её обратно в РНР-значение. Возвращается конвертированное значение, которое может быть integer, float, string, array или object.

$ar = array(
"merkuriy"=>array("size" => 5800, "diameter" => 4880, "massa" => 3.3e23),
"venera" => array("size" => 10820,"diameter" => 12100,"massa" => 4.9e24),
"earth" =>array("size" => 14960,"diameter" => 6371,"massa" => 6e24),
);
$qwerty = serialize($ar);
a:3:{s:8:"merkuriy";a:3:{s:4:"size";i:5800;s:8:"diameter";i:4880;s:5:"massa";d:3.3000000000000003E+23;}s:6:"venera";a:3:{s:4:"size";i:10820;s:8:"diameter";i:12100;s:5:"massa";d:4.9000000000000003E+24;}s:5:"earth";a:3:{s:4:"size";i:14960;s:8:"diameter";i:6371;s:5:"massa";d:5.9999999999999999E+24;}}

Урок №11

Слайд 3

Основы PHP Урок №4

Обработка строк

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

строками. Более специализированные функции будут на слайдах, посвященных регулярным выражениям и обработке URL.

ОСНОВЫ PHP

3

addslashes() – экранирует спецсимволы в строке (кавычки). Часто применяется при записи в базу данных.
stripslashes() – возвращает спецсимволам человеческий вид.
string addcslashes ( string $str , string $charlist )
Возвращает строку, экранированную обратными слешами перед символами, указанными в параметре charlist.
$ar = "D'artanian";
$qwerty = addcslashes($ar, "r,t");
//выведет: D'a\r\tanian
stripсslashes() – снимает экранирование.

int strpos ( string haystack, string needle [, int offset] ) - возвращает позицию первого вхождения подстроки
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a',);  // $pos = 0 $pos = strpos($newstring, 'a', 1);  // $pos = 7, не 0
int strrpos ( string haystack, string needle [, int offset] ) – возвращает позицию последнего вхождения подстроки
string substr ( string string, int start [, int length] ) - возвращает подстроку
$rest = substr("abcdef", 1);     // возвращает "bcdef" $rest = substr("abcdef", 1, 3);  // возвращает "bcd«
$rest = substr("abcdef", -2);     // возвращает "ef" $rest = substr("abcdef", -3, 1);  // возвращает "d«

Урок №11

Слайд 4

Основы PHP Урок №4

Обработка строк - str_replace, substr_replace

ОСНОВЫ PHP

4

mixed str_replace ( mixed search, mixed

replace, mixed subject [, int &count] ) - эта функция возвращает строку или массив subject, в котором все вхождения search заменены на replace.
$bodytag = str_replace("%body%", "black", "");
// результат:  
$vowels = array("a", "e", "i", "o", "u", "A", "E", "I", "O", "U"); $onlyconsonants = str_replace($vowels, "", "Hello World of PHP");
// результат: Hll Wrld f PHP
$phrase  = "You should eat fruits, vegetables, and fiber every day."; $healthy = array("fruits", "vegetables", "fiber"); $yummy   = array("pizza", "beer", "ice cream"); $newphrase = str_replace($healthy, $yummy, $phrase);
// результат: You should eat pizza, beer, and ice cream every day
// начиная с версии 5.0.0 доступен аргумент count $str = str_replace("ll", "", "good golly miss molly!", $count); echo $count;  // 2

str_ireplace --  Регистронезависимый вариант функции str_replace
string substr_replace ( string string, string replacement, int start [, int length] ) - заменяет часть строки string начинающуюся с символа с порядковым номером start и длиной lengthстрокой replacement и возвращает результат.
Если start - полож. число, замена начинается с символа с порядковым номером start.
Если start - отриц. число, замена начинается с символа с порядковым номером start, считая от конца строки.
Если аргумент length - полож. число, то он определяет длину заменяемой подстроки. Если отриц. - то определяет кол-во символов от конца строки, на котором заканчивается замена. length необязателен и по умолчанию это замена до конца строки string.
$var = 'ABCDEFGH:/MNRPQR/'; echo substr_replace($var, 'bob', 0); // заменяет всю строку $var на 'bob'. echo substr_replace($var, 'bob', 0, 0); // Вставляет 'bob' в начало $var.  /* заменяет 'MNRPQR' in $var на 'bob'. */ echo substr_replace($var, 'bob', 10, -1); echo substr_replace($var, 'bob', -7, -1) ; echo substr_replace($var, '', 10, -1); // Удаляет 'MNRPQR' из $var.

Урок №11

Слайд 5

Основы PHP Урок №4

Обработка строк

ОСНОВЫ PHP

5

string strtr ( string str, string from, string to

) string strtr ( string str, array replace_pairs ) Эта функция возвращает строку str, в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to.
Если длины строк from и to отличаются, "лишние" символы в более длинной строке не используются.
Пример 1:
$addr = strtr($addr, "дец", "aao");
Пример 2:
$trans = array("hello" => "hi", "hi" => "hello"); echo strtr("hi all, I said hello", $trans);
// hello all, I said hi

string str_repeat ( string input, int multiplier ) - возвращает строку input_str, повторенную multiplier раз. multiplier должен быть больше или равен нулю. Если он равен нулю, возвращается пустая строка.
int substr_count ( string haystack, string needle ) - возвращает число вхождений подстроки needle в строку haystack. Поиск ведется с учетом регистра символов.
int strcmp ( string str1, string str2 ) - сравнение строк, безопасное для данных в двоичной форме. Эта функция учитывает регистр символов.
Возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.
strtolower() - преобразует строку в нижний регистр.
strtoupper() – перевод в верхний регистр.

Урок №11

Слайд 6

Основы PHP Урок №4

Строку -> в Массив и обратно

ОСНОВЫ PHP

6

array explode ( string separator,

string string [, int limit] ) - возвращает массив строк, полученных разбиением строки string с использованием separator в качестве разделителя. Если передан аргумент limit передан, массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string. Если separator не содержится в string, то explode() возвращает массив, содержащий один элемент string.
$names  = “Nick Serg Ivan Demid"; $name_mass = explode(" ", $names); echo $ name_mass[0];  // Nick

string implode ( string glue, array pieces ) - Возвращает строку, полученную объединением строковых представлений элементов массива pieces, со вставкой строкиglue между соседними элементами.
$array = array('lastname', 'email', 'phone'); $separated = implode(",", $array); echo $separated; // lastname,email,phone

Урок №11

Слайд 7

Основы PHP Урок №4

Обработка строк

ОСНОВЫ PHP

7

string strip_tags ( string str [, string allowable_tags] )

- возвращает строку str, из которой удалены HTML и PHP тэги. Необязательный второй аргумент может быть использован для указания тэгов, которые не должны удаляться.
string trim ( string str [, string charlist] ) - возвращает строку str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim() удаляет следующие символы:
" " (ASCII 32 (0x20)), символ пробела. "\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), перевод строки. "\r" (ASCII 13 (0x0D)), возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт. "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
Можно также задать список символов для удаления с помощью аргумента charlist. С помощью .. можно задать диапазон символов.
$text = "\t\tЛишь несколько слов :) ...  "; echo trim($text);           // "Лишь несколько слов :) ..." echo trim($text, " \t."); // "Лишь несколько слов :)" // удалить управляющие символы ASCII из начала и конца // строки $binary (от 0 до 31 включительно) $clean = trim($binary, "\x00..\x1F");

html_entity_decode -- Преобразует HTML сущности в соответствующие символы
htmlentities -- Преобразует символы в соответствующие HTML сущности.
htmlspecialchars_decode -- Преобразует специальные HTML-сущности обратно в соответствующие символы
htmlspecialchars -- Преобразует специальные символы в HTML сущности
nl2br --  Вставляет HTML код разрыва строки перед каждым переводом строки
int strcmp ( string str1, string str2 ) - возвращает отрицательное число, если str1 меньше, чем str2; положительное число, если str1 больше, чем str2, и 0 если строки равны.

Урок №11

Слайд 8

Основы PHP Урок №4

Получение хеша

ОСНОВЫ PHP

8

string md5 ( string str [, bool raw_output] )

- вычисляет MD5 хэш строки str используя алгоритм MD5 RSA Data Security, Inc. и возвращает этот хэш. Хэш представляет собой 32-значное шестнадцатеричное число. Если необязательный аргумент raw_output имеет значение TRUE, то возвращается бинарная строка из 16 символов.
$password = 'apple'; if (md5($password) === '1f3870be274f6c49b3e31a0c6728957f'){     echo "Пароль верный!"; }
string md5_file ( string filename [, bool raw_output] ) – возвращает MD5 хэш файла, имя которого задано аргументом filename

string sha1 ( string str [, bool raw_output] ) - возвращает хэш строки str, вычисленный по алгоритму US Secure Hash Algorithm 1. Хэш представляет собой 40-разрядное шестнадцатиричное число. Если необязательный аргумент raw_output имет значение TRUE, хэш возвращается в виде двоичной строки из 20 символов.
$password = 'apple';                       if (sha1($password) === '6099a566a619528259db5aa8d7a5aa2d4122259a'){      echo "Пароль верный!"; }
string sha1_file ( string filename [, bool raw_output] ) – возвращает SHA1 хэш файла, имя которого задано аргументом filename

Урок №11

Слайд 9

Основы PHP Урок №4

Регулярные выражения (расширенные POSIX)

ОСНОВЫ PHP

9

Функции регулярных выражений POSIX:
ereg_replace — Осуществляет

замену по регулярному выражению
ereg — Совпадение с регулярным выражением
eregi_replace — Осуществляет замену по регулярному выражению без учета регистра
eregi — Совпадение с регулярным выражением без учёта регистра
split — Разбиение строки на массив по регулярному выражению
spliti — Разбивает строку в массив с помощью регулярного выражения без учета регистра
sql_regcase — Создает регулярное выражение для регистронезависимого сравнения
Замечание:
Так как в PHP 5.3.0 это расширение устарело, вызов любой функции, предоставленной в нем, будет выдавать уведомление E_DEPRECATED.
Не рекомендую их использование!!!

Урок №11

Слайд 10

Основы PHP Урок №4

Perl-совместимые регулярные выражения (PCRE)

ОСНОВЫ PHP

10

Регулярное выражение - это шаблон,

с которым сравнивается указанная строка слева направо.
Регулярное выражение - это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.
Проще говоря, регулярное выражение представляет собой набор символов (шаблон), описывающих правило поиска подстроки. Сравнение производится слева направо.
Синтаксис шаблонов, используемых в функциях этого раздела, во многом похож на синтаксис, используемый в Perl:
Выражение должно быть заключено в разделители, например, прямые слеши '/'.
Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~).
Также можно использовать разделитель в виде скобок, где стартовый и завершающий разделители являются соответственно открывающей и закрывающей скобками. (), {}, [] и <> являются допустимыми парами разделителей.
Пример: /foo bar/ или #^[^0-9]$# или +php+ или %[a-zA-Z0-9_-]%
Если символ разделителя встречается в шаблоне, его необходимо экранировать.
После закрывающего разделителя можно указывать различные модификаторы, влияющие на работу регулярных выражений:

Урок №11

Слайд 11

Основы PHP Урок №4

Таблица метасимволов

ОСНОВЫ PHP

11

Урок №11

Слайд 12

Основы PHP Урок №4

Модификаторы

ОСНОВЫ PHP

12

Урок №11

Слайд 13

Основы PHP Урок №4

Таблица примитивных полезных символов

ОСНОВЫ PHP

13

Урок №11

Слайд 14

Основы PHP Урок №4

Таблица сложных полезных символов

ОСНОВЫ PHP

14

Урок №11

Слайд 15

Основы PHP Урок №4

Функции для работы с регулярными выражениями (Perl-совместимые)

ОСНОВЫ PHP

15

Урок №11

preg_grep -- 

Возвращает массив вхождений, которые соответствуют шаблону
preg_match_all -- Выполняет глобальный поиск шаблона в строке
preg_match -- Выполняет проверку на соответствие регулярному выражению
preg_quote -- Экранирует символы в регулярных выражениях
preg_replace_callback -- Выполняет поиск по регулярному выражению и замену с использованием функции обратного вызова
preg_replace -- Выполняет поиск и замену по регулярному выражению
preg_split -- Разбивает строку по регулярному выражению

Слайд 16

Основы PHP Урок №4

preg_replace

ОСНОВЫ PHP

16

Урок №11

mixed preg_replace ( mixed $pattern , mixed

$replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) - поиск в строке subject совпадений с шаблоном pattern и заменяет их на replacement.
Pattern может быть как строкой, так и массивом строк.
Replacement - строка или массив строк для замены. Если этот параметр является строкой, а pattern является массивом, все шаблоны будут заменены этой строкой. Если и pattern и replacement являются массивами, каждый элемент pattern будет заменен соответствующим элементом из replacement. Если массив replacement содержит меньше элементов, чем массив pattern, то все лишние шаблоны из pattern будут заменены пустыми строками.
Если параметр limit указан, будет произведена замена limit вхождений шаблона; в случае, если limit опущен либо равняется -1, будут заменены все вхождения шаблона.
Count - если указана, то эта переменная будет заполнена количеством произведенных замен.

preg_replace() возвращает массив, если параметр subject является массивом, иначе возвращается строка.
Если найдены совпадения, возвращается новая версия subject, иначе subject возвращается нетронутым, в случае ошибки возвращается NULL.
Использование подмасок, за которыми следует цифра:
$string = 'April 15, 2003';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}1,$3';
echo preg_replace($pattern, $replacement, $string);
Результат выполнения данного примера:
April1,2003

Слайд 17

Основы PHP Урок №4

preg_replace

ОСНОВЫ PHP

17

Урок №11

Замечание:
При использовании массивов в pattern и replacement,

ключи обрабатываются в том порядке, в котором они находятся в массиве. Этот порядок не всегда совпадает с числовым порядком индексов. Если вы используете индексы для сопоставления друг с другом нужного pattern и replacement, то вам необходимо прогнать через функцию ksort() оба массива перед использованием preg_replace().

Использование массивов с числовыми индексами в качестве аргументов функции preg_replace()
$string = 'The quick brown fox jumped over the lazy dog.';
$patterns = array();
$patterns[0] = '/quick/';
$patterns[1] = '/brown/';
$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'bear';
$replacements[1] = 'black';
$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
?>
Результат выполнения данного примера:
The bear black slow jumped over the lazy dog.
Отсортировав по ключам шаблоны и замены, получаем желаемый результат:
ksort($patterns);
ksort($replacements);
echo preg_replace($patterns, $replacements, $string);
?>
Результат выполнения данного примера:
The slow black bear jumped over the lazy dog.

Слайд 18

Основы PHP Урок №4

preg_replace - замена по нескольким шаблонам

ОСНОВЫ PHP

18

Урок №11

echo '{startDate}

= 1999-5-27

';
$patterns = array ('/^\s*{(\w+)}\s*=/');
$replace = array ('$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
echo '
';
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/');
$replace = array ('\3/\4/\1\2');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');
echo '
';
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', '/^\s*{(\w+)}\s*=/');
$replace = array ('\3/\4/\1\2', '$\1 =');
echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27');

Слайд 19

Основы PHP Урок №4

preg_replace

ОСНОВЫ PHP

19

Урок №11

Пример: Чистка пробелов
Этот пример вычищает лишние пробелы

в строке.
$str = 'foo o';
$str = preg_replace('/\s\s+/', ' ', $str);
// Это теперь будет 'foo o'
echo $str;
?>
Пример: Использование параметра count
$count = 0;
echo preg_replace(array('/\d/', '/\s/'), '*', 'xp 4 to', -1 , $count);
echo $count; //3
?>
Результат выполнения данного примера:
xp***to
3
Примечания

Слайд 20

Основы PHP Урок №4

preg_replace_callback

ОСНОВЫ PHP

20

Урок №11

mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject

[, int limit] ) Поведение этой функции во многом напоминает preg_replace(), за исключением того, что вместо параметра replacement необходимо указывать callback функцию, которой в качестве входящего параметра передается массив найденных вхождений. Ожидаемый результат - строка, которой будет произведена замена.

// Этот текст был использован в 2002 году
// мы хотим обновить даты к 2003 году
$text = "April fools day is 04/01/2002\n";
$text.= "Last christmas was 12/24/2001\n";
// функция обратного вызова
function next_year($matches)
{
// как обычно: $matches[0] - полное вхождение шаблона
// $matches[1] - вхождение первой подмаски, заключенной в круглые скобки, и так далее...
return $matches[1].($matches[2]+1);
}
echo preg_replace_callback("|(\d{2}/\d{2}/)(\d{4})|", "next_year", $text);
// результат:
// April fools day is 04/01/2003
// Last christmas was 12/24/2002

Слайд 21

Основы PHP Урок №4

preg_grep

ОСНОВЫ PHP

21

Урок №11

preg_grep - Возвращает массив вхождений, которые соответствуют

шаблону
Описание
array preg_grep ( string pattern, array input [, int flags] ) - возвращает массив, состоящий из элементов входящего массива input, которые соответствуют заданному шаблону pattern.
Параметр flags может принимать следующие значения:
PREG_GREP_INVERT - В случае, если этот флаг установлен, функция preg_grep(), возвращает те элементы массива, которые не соответствуют заданному шаблону pattern.
Результат, возвращаемый функцией preg_grep() использует те же индексы, что и массив исходных данных. Если такое поведение вам не подходит, примените array_values() к массиву, возвращаемому preg_grep() для переиндексации.

// Возвращает все элементы массива, // содержащие числа с плавающей точкой $fl_array = preg_grep("/^(\d+)?\.\d+$/", $array);

Слайд 22

Основы PHP Урок №4

preg_match

ОСНОВЫ PHP

22

Урок №11

mixed preg_match ( string pattern, string subject

[, array &matches [, int flags [, int offset]]] ) - ищет в заданном тексте subject совпадения с шаблоном pattern
В случае, если дополнительный параметр matches указан, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки, соответствующую первой подмаске, и так далее.
flags может принимать следующие значения:
PREG_OFFSET_CAPTURE - если этот флаг указан, для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.
Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска.

Поиск подстроки "php" в тексте:
if(preg_match("/php/i", "PHP is the web scripting language of choice.", $mass)){
echo "We found it.";
} else {
echo "NO NO NO";
}
// Символ "i" после закрывающего ограничителя шаблона означает // регистронезависимый поиск.
Извлечение доменного имени из URL:
// Извлекаем имя хоста из URL preg_match("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/index", $matches); $host = $matches[2]; // извлекаем две последние части имени хоста preg_match("/[^\.\/]+\.[^\.\/]+$/", $host, $matches); echo "domain name is: {$matches[0]}\n";

Слайд 23

Основы PHP Урок №4

preg_match_all

ОСНОВЫ PHP

23

Урок №11

int preg_match_all ( string pattern, string subject,

array &matches [, int flags [, int offset]] ) - ищет в строке subject все совпадения с шаблоном pattern и помещает результат в массив matches в порядке, определяемом комбинацией флагов flags.
После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.
Дополнительный параметр flags может комбинировать следующие значения :
PREG_PATTERN_ORDER (используется по умолчанию) - результат будет упорядочен следующим образом: элемент $matches[0] содержит массив полных вхождений шаблона, элемент $matches[1] содержит массив вхождений первой подмаски, и так далее.
PREG_SET_ORDER - результат будет упорядочен следующим образом: элемент $matches[0] содержит первый набор вхождений, элемент $matches[1] содержит второй набор вхождений, и так далее.
PREG_OFFSET_CAPTURE - для каждой найденной подстроки будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.

Поиск осуществляется слева направо, с начала строки. Дополнительный параметр offset может быть использован для указания альтернативной начальной позиции для поиска.
Пример:
Получение всех телефонных номеров из текста:
preg_match_all("/\(?  (\d{3})?  \)?  (?(1)  [\-\s] ) \d{3}-\d{4}/x", "Call 555-1212 or 1-800-555-212", $phones);
Проверяем, является ли переменная числом
if (!preg_match("|^[\d]+$|", $var)){ … }

Слайд 24

Основы PHP Урок №4

Отличие «preg_match» от «preg_match_all»

ОСНОВЫ PHP

24

Урок №11

Разница заключается в том,

что «preg_match» ищет только до первого совпадения с маской поиска. Как только что-то найдено, поиск останавливается. Так же разница в выдаваемом результате. «preg_match» возвращает одномерный массив.
Вот пример.
if (preg_match('|(.+?)|isU', $sContent, $arr)){
return $arr[1];
}
else {
return false;
}
В этом случае нулевой элемент массива «$arr» содержит найденное совпадение вместе с тегами «title», а первый элемент - «$arr[1]» только текст между этими тегами. И не путайте, если в искомом коде несколько тегов «title», это не значит что остальные значения будут записаны в «$arr[2]» и так далее. В случае с «preg_match» поиск идет только до первого найденного совпадения, а элемент «$arr[2]» окажется не пуст, только если в маске указано несколько правил.

Слайд 25

Основы PHP Урок №4

preg_match_all

ОСНОВЫ PHP

25

Урок №11

Жадный поиск совпадений с HTML-тэгами:
// Запись является

примером использования ссылок на подмаски.
// Она означает необходимость соответствия подстроки строке, зафиксированной
// второй подмаской, в нашем примере это ([\w]+).
// Дополнительный слеш необходим, так как используются двойные кавычки.
$html = "bold textclick me";
preg_match_all("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $html, $matches);
for ($i=0; $i< count($matches[0]); $i++) {
echo "matched: " . htmlspecialchars($matches[0][$i]) . "
";
echo "part 1: " . htmlspecialchars($matches[1][$i]) . "
";
echo "part 2: " . htmlspecialchars($matches[3][$i]) . "
";
echo "part 3: " . htmlspecialchars($matches[4][$i]) . "

";
}

Результат:
matched: bold text
part 1:
part 2: bold text
part 3:

matched: click me
part 1:
part 2: click me
part 3:

Слайд 26

Основы PHP Урок №4

preg_quote

ОСНОВЫ PHP

26

Урок №11

string preg_quote ( string str [, string

delimiter] ) - принимает строку str и добавляет обратный слеш перед каждым служебным символом. Это бывает полезно, если в составлении шаблона участвуют строковые переменные, значение которых в процессе работы скрипта может меняться.
В случае, если дополнительный параметр delimiter указан, он будет также экранироваться. Это удобно для экранирования ограничителя, который используется в PCRE функциях. Наиболее распространенным ограничителем является символ '/'.
В регулярных выражениях служебными считаются так же следующие символы:
. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :

$keywords = "$40 for a g3/400"; $keywords = preg_quote($keywords, "/"); echo $keywords; 
// возвращает \$40 for a g3\/400

Слайд 27

Основы PHP Урок №4

preg_quote

ОСНОВЫ PHP

27

Урок №11

// В данном примере preg_quote($word) используется, чтобы // избежать трактовки символа '*' как спец. символа. $textbody = "This book is *very* difficult to find."; $word = "*very*"; $textbody = preg_replace ("/" . preg_quote($word) . "/",                           "" . $word . "",                           $textbody);

Выделение курсивом слова в тексте

Слайд 28

Основы PHP Урок №4

preg_split

ОСНОВЫ PHP

28

Урок №11

array preg_split ( string pattern, string subject

[, int limit [, int flags]] ) - возвращает массив, состоящий из подстрок заданной строки subject, которая разбита по границам, соответствующим шаблону pattern.
Если параметр limit указан, функция возвращает не более, чем limit подстрок. Специальное значение limit, равное -1, подразумевает отсутствие ограничения, это весьма полезно для указания еще одного опционального параметра flags.
flags может быть произвольной комбинацией следующих флагов (соединение происходит при помощи оператора '|'):
PREG_SPLIT_NO_EMPTY - функция preg_split() вернет только непустые подстроки.
PREG_SPLIT_DELIM_CAPTURE - выражение, заключенное в круглые скобки в разделяющем шаблоне, также извлекается из заданной строки и возвращается функцией.
PREG_SPLIT_OFFSET_CAPTURE - для каждой найденной подстроки, будет указана ее позиция в исходной строке. Необходимо помнить, что этот флаг меняет формат возвращаемых данных: каждое вхождение возвращается в виде массива, в нулевом элементе которого содержится найденная подстрока, а в первом - смещение.

Получение подстрок из заданного текста:
// разбиваем строку по произвольному числу запятых и пробельных //символов, которые включают в себя  " ", \r, \t, \n и \f
$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
Разбиваем строку на составляющие символы:
$str = 'string';
$chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($chars);
Получим:
Array (
[0] => s
[1] => t
[2] => r
[3] => i
[4] => n
[5] => g
)

Слайд 29

Основы PHP Урок №4

preg_split

ОСНОВЫ PHP

29

Урок №11

Разбиваем строку с указанием смещения для каждой

из найденных подстрок:

На выходе получаем:
Array
(
[0] => Array
(
[0] => hypertext
[1] => 0
)
[1] => Array
(
[0] => language
[1] => 10
)
[2] => Array
(
[0] => programming
[1] => 19
)
)

Слайд 30

Основы PHP Урок №4

Полезные ресурсы

ОСНОВЫ PHP

30

http://lifeexample.ru/php-primeryi-skriptov/regulyarnyie-vyirazheniya-v-php.html - простая статья о регулярках
http://www.skillz.ru/dev/php/article-Regulyarnye_vyrazheniya_dlya_chaynikov.html -

регулярки для чайников
http://archive-ipq-co.narod.ru/l1/regexp.html - подробно по регулярным выражениям
Примеры популярных выражений:
https://htmlweb.ru/php/example/preg.php
http://tradebenefit.ru/art?id=143

Урок №11

Имя файла: Основы-PHP.-Сериализация.pptx
Количество просмотров: 56
Количество скачиваний: 0