- Главная
- Без категории
- Основы PHP. Сериализация
Содержание
- 2. Основы PHP Урок №4 Сериализация массива Сериализация – это процесс перевода какой-либо структуры данных в последовательность
- 3. Основы PHP Урок №4 Обработка строк Эти функции предназначены для выполнения различных манипуляций со строками. Более
- 4. Основы PHP Урок №4 Обработка строк - str_replace, substr_replace ОСНОВЫ PHP 4 mixed str_replace ( mixed
- 5. Основы PHP Урок №4 Обработка строк ОСНОВЫ PHP 5 string strtr ( string str, string from,
- 6. Основы PHP Урок №4 Строку -> в Массив и обратно ОСНОВЫ PHP 6 array explode (
- 7. Основы PHP Урок №4 Обработка строк ОСНОВЫ PHP 7 string strip_tags ( string str [, string
- 8. Основы PHP Урок №4 Получение хеша ОСНОВЫ PHP 8 string md5 ( string str [, bool
- 9. Основы PHP Урок №4 Регулярные выражения (расширенные POSIX) ОСНОВЫ PHP 9 Функции регулярных выражений POSIX: ereg_replace
- 10. Основы PHP Урок №4 Perl-совместимые регулярные выражения (PCRE) ОСНОВЫ PHP 10 Регулярное выражение - это шаблон,
- 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
- 16. Основы PHP Урок №4 preg_replace ОСНОВЫ PHP 16 Урок №11 mixed preg_replace ( mixed $pattern ,
- 17. Основы PHP Урок №4 preg_replace ОСНОВЫ PHP 17 Урок №11 Замечание: При использовании массивов в pattern
- 18. Основы PHP Урок №4 preg_replace - замена по нескольким шаблонам ОСНОВЫ PHP 18 Урок №11 echo
- 19. Основы PHP Урок №4 preg_replace ОСНОВЫ PHP 19 Урок №11 Пример: Чистка пробелов Этот пример вычищает
- 20. Основы PHP Урок №4 preg_replace_callback ОСНОВЫ PHP 20 Урок №11 mixed preg_replace_callback ( mixed pattern, callback
- 21. Основы PHP Урок №4 preg_grep ОСНОВЫ PHP 21 Урок №11 preg_grep - Возвращает массив вхождений, которые
- 22. Основы PHP Урок №4 preg_match ОСНОВЫ PHP 22 Урок №11 mixed preg_match ( string pattern, string
- 23. Основы PHP Урок №4 preg_match_all ОСНОВЫ PHP 23 Урок №11 int preg_match_all ( string pattern, string
- 24. Основы PHP Урок №4 Отличие «preg_match» от «preg_match_all» ОСНОВЫ PHP 24 Урок №11 Разница заключается в
- 25. Основы PHP Урок №4 preg_match_all ОСНОВЫ PHP 25 Урок №11 Жадный поиск совпадений с HTML-тэгами: //
- 26. Основы PHP Урок №4 preg_quote ОСНОВЫ PHP 26 Урок №11 string preg_quote ( string str [,
- 27. Основы PHP Урок №4 preg_quote ОСНОВЫ PHP 27 Урок №11 // В данном примере preg_quote($word) используется,
- 28. Основы PHP Урок №4 preg_split ОСНОВЫ PHP 28 Урок №11 array preg_split ( string pattern, string
- 29. Основы PHP Урок №4 preg_split ОСНОВЫ PHP 29 Урок №11 Разбиваем строку с указанием смещения для
- 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
- 32. Скачать презентацию
Основы PHP Урок №4
Сериализация массива
Сериализация – это процесс перевода какой-либо структуры
Основы PHP Урок №4
Сериализация массива
Сериализация – это процесс перевода какой-либо структуры
Десериализация – это обратная операция, когда из одной строки, на выходе получаем сложную структуру.
ОСНОВЫ 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
Основы PHP Урок №4
Обработка строк
Эти функции предназначены для выполнения различных
Основы PHP Урок №4
Обработка строк
Эти функции предназначены для выполнения различных
ОСНОВЫ 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
Основы PHP Урок №4
Обработка строк - str_replace, substr_replace
ОСНОВЫ PHP
4
mixed str_replace ( mixed
Основы PHP Урок №4
Обработка строк - str_replace, substr_replace
ОСНОВЫ PHP
4
mixed str_replace ( mixed
$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
Основы PHP Урок №4
Обработка строк
ОСНОВЫ PHP
5
string strtr ( string str, string from,
Основы PHP Урок №4
Обработка строк
ОСНОВЫ PHP
5
string strtr ( string str, string from,
Если длины строк 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
Основы PHP Урок №4
Строку -> в Массив и обратно
ОСНОВЫ PHP
6
array explode (
Основы PHP Урок №4
Строку -> в Массив и обратно
ОСНОВЫ PHP
6
array explode (
$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
Основы PHP Урок №4
Обработка строк
ОСНОВЫ PHP
7
string strip_tags ( string str [, string
Основы PHP Урок №4
Обработка строк
ОСНОВЫ PHP
7
string strip_tags ( string str [, string
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
Основы PHP Урок №4
Получение хеша
ОСНОВЫ PHP
8
string md5 ( string str [, bool
Основы PHP Урок №4
Получение хеша
ОСНОВЫ PHP
8
string md5 ( string str [, bool
$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
Основы PHP Урок №4
Регулярные выражения (расширенные POSIX)
ОСНОВЫ PHP
9
Функции регулярных выражений
Основы PHP Урок №4
Регулярные выражения (расширенные POSIX)
ОСНОВЫ PHP
9
Функции регулярных выражений
ereg_replace — Осуществляет замену по регулярному выражению
ereg — Совпадение с регулярным выражением
eregi_replace — Осуществляет замену по регулярному выражению без учета регистра
eregi — Совпадение с регулярным выражением без учёта регистра
split — Разбиение строки на массив по регулярному выражению
spliti — Разбивает строку в массив с помощью регулярного выражения без учета регистра
sql_regcase — Создает регулярное выражение для регистронезависимого сравнения
Замечание:
Так как в PHP 5.3.0 это расширение устарело, вызов любой функции, предоставленной в нем, будет выдавать уведомление E_DEPRECATED.
Не рекомендую их использование!!!
Урок №11
Основы PHP Урок №4
Perl-совместимые регулярные выражения (PCRE)
ОСНОВЫ PHP
10
Регулярное выражение -
Основы PHP Урок №4
Perl-совместимые регулярные выражения (PCRE)
ОСНОВЫ PHP
10
Регулярное выражение -
Регулярное выражение - это формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов.
Проще говоря, регулярное выражение представляет собой набор символов (шаблон), описывающих правило поиска подстроки. Сравнение производится слева направо.
Синтаксис шаблонов, используемых в функциях этого раздела, во многом похож на синтаксис, используемый в Perl:
Выражение должно быть заключено в разделители, например, прямые слеши '/'.
Часто используемыми разделителями являются косые черты (/), знаки решетки (#) и тильды (~).
Также можно использовать разделитель в виде скобок, где стартовый и завершающий разделители являются соответственно открывающей и закрывающей скобками. (), {}, [] и <> являются допустимыми парами разделителей.
Пример: /foo bar/ или #^[^0-9]$# или +php+ или %[a-zA-Z0-9_-]%
Если символ разделителя встречается в шаблоне, его необходимо экранировать.
После закрывающего разделителя можно указывать различные модификаторы, влияющие на работу регулярных выражений:
Урок №11
Основы PHP Урок №4
Таблица метасимволов
ОСНОВЫ PHP
11
Урок №11
Основы PHP Урок №4
Таблица метасимволов
ОСНОВЫ PHP
11
Урок №11
Основы PHP Урок №4
Модификаторы
ОСНОВЫ PHP
12
Урок №11
Основы PHP Урок №4
Модификаторы
ОСНОВЫ PHP
12
Урок №11
Основы PHP Урок №4
Таблица примитивных полезных символов
ОСНОВЫ PHP
13
Урок №11
Основы PHP Урок №4
Таблица примитивных полезных символов
ОСНОВЫ PHP
13
Урок №11
Основы PHP Урок №4
Таблица сложных полезных символов
ОСНОВЫ PHP
14
Урок №11
Основы PHP Урок №4
Таблица сложных полезных символов
ОСНОВЫ PHP
14
Урок №11
Основы PHP Урок №4
Функции для работы с регулярными выражениями (Perl-совместимые)
ОСНОВЫ
Основы PHP Урок №4
Функции для работы с регулярными выражениями (Perl-совместимые)
ОСНОВЫ
15
Урок №11
preg_grep -- Возвращает массив вхождений, которые соответствуют шаблону
preg_match_all -- Выполняет глобальный поиск шаблона в строке
preg_match -- Выполняет проверку на соответствие регулярному выражению
preg_quote -- Экранирует символы в регулярных выражениях
preg_replace_callback -- Выполняет поиск по регулярному выражению и замену с использованием функции обратного вызова
preg_replace -- Выполняет поиск и замену по регулярному выражению
preg_split -- Разбивает строку по регулярному выражению
Основы PHP Урок №4
preg_replace
ОСНОВЫ PHP
16
Урок №11
mixed preg_replace ( mixed $pattern
Основы PHP Урок №4
preg_replace
ОСНОВЫ PHP
16
Урок №11
mixed preg_replace ( mixed $pattern
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
Основы PHP Урок №4
preg_replace
ОСНОВЫ PHP
17
Урок №11
Замечание:
При использовании массивов в pattern
Основы PHP Урок №4
preg_replace
ОСНОВЫ PHP
17
Урок №11
Замечание:
При использовании массивов в pattern
Использование массивов с числовыми индексами в качестве аргументов функции 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.
Основы PHP Урок №4
preg_replace - замена по нескольким шаблонам
ОСНОВЫ PHP
18
Урок
Основы PHP Урок №4
preg_replace - замена по нескольким шаблонам
ОСНОВЫ PHP
18
Урок
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');
Основы PHP Урок №4
preg_replace
ОСНОВЫ PHP
19
Урок №11
Пример: Чистка пробелов
Этот пример вычищает
Основы 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
Примечания
Основы PHP Урок №4
preg_replace_callback
ОСНОВЫ PHP
20
Урок №11
mixed preg_replace_callback ( mixed pattern, callback callback,
Основы PHP Урок №4
preg_replace_callback
ОСНОВЫ PHP
20
Урок №11
mixed preg_replace_callback ( mixed pattern, callback 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
Основы PHP Урок №4
preg_grep
ОСНОВЫ PHP
21
Урок №11
preg_grep - Возвращает массив вхождений,
Основы 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);
Основы PHP Урок №4
preg_match
ОСНОВЫ PHP
22
Урок №11
mixed preg_match ( string pattern,
Основы PHP Урок №4
preg_match
ОСНОВЫ PHP
22
Урок №11
mixed preg_match ( string 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";
Основы PHP Урок №4
preg_match_all
ОСНОВЫ PHP
23
Урок №11
int preg_match_all ( string pattern,
Основы PHP Урок №4
preg_match_all
ОСНОВЫ PHP
23
Урок №11
int preg_match_all ( string pattern,
После нахождения первого соответствия последующие поиски будут осуществляться не с начала строки, а от конца последнего найденного вхождения.
Дополнительный параметр 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)){ … }
Основы PHP Урок №4
Отличие «preg_match» от «preg_match_all»
ОСНОВЫ PHP
24
Урок №11
Разница заключается
Основы PHP Урок №4
Отличие «preg_match» от «preg_match_all»
ОСНОВЫ PHP
24
Урок №11
Разница заключается
Вот пример.
if (preg_match('|
return $arr[1];
}
else {
return false;
}
В этом случае нулевой элемент массива «$arr» содержит найденное совпадение вместе с тегами «title», а первый элемент - «$arr[1]» только текст между этими тегами. И не путайте, если в искомом коде несколько тегов «title», это не значит что остальные значения будут записаны в «$arr[2]» и так далее. В случае с «preg_match» поиск идет только до первого найденного совпадения, а элемент «$arr[2]» окажется не пуст, только если в маске указано несколько правил.
Основы PHP Урок №4
preg_match_all
ОСНОВЫ PHP
25
Урок №11
Жадный поиск совпадений с HTML-тэгами:
//
Основы 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:
Основы PHP Урок №4
preg_quote
ОСНОВЫ PHP
26
Урок №11
string preg_quote ( string str
Основы PHP Урок №4
preg_quote
ОСНОВЫ PHP
26
Урок №11
string preg_quote ( string str
В случае, если дополнительный параметр delimiter указан, он будет также экранироваться. Это удобно для экранирования ограничителя, который используется в PCRE функциях. Наиболее распространенным ограничителем является символ '/'.
В регулярных выражениях служебными считаются так же следующие символы:
. \\ + * ? [ ^ ] $ ( ) { } = ! < > | :
$keywords = "$40 for a g3/400";
$keywords = preg_quote($keywords, "/");
echo $keywords;
// возвращает \$40 for a g3\/400
Основы 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);
Выделение курсивом слова в тексте
Основы 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);
Выделение курсивом слова в тексте
Основы PHP Урок №4
preg_split
ОСНОВЫ PHP
28
Урок №11
array preg_split ( string pattern,
Основы PHP Урок №4
preg_split
ОСНОВЫ PHP
28
Урок №11
array preg_split ( string 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
)
Основы PHP Урок №4
preg_split
ОСНОВЫ PHP
29
Урок №11
Разбиваем строку с указанием смещения
Основы 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
)
)
Основы PHP Урок №4
Полезные ресурсы
ОСНОВЫ PHP
30
http://lifeexample.ru/php-primeryi-skriptov/regulyarnyie-vyirazheniya-v-php.html - простая статья о
Основы 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