Слайд 25Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция preg_match_all( )
Порядок сохранения в массиве совпадения текста, совпавшего с подвыражениями, определяется
необязательным параметром порядок. Этот параметр может принимать два значения:
1. PREG_PATTERN_ORDER — используется по умолчанию, если параметр порядок не указан. Порядок, определяемый значением PREG_PATTERN_ORDER: первый элемент (с индексом 0) содержит массив совпадений для всего регулярного выражения, второй элемент (с индексом 1) содержит массив всех совпадений для первого подвыражения в круглых скобках и т. д.;
2. PREG_SET_ORDER — порядок сортировки массива: первый элемент (с индексом 0) содержит массив с текстом, совпавшим со всеми подвыражениями в круглых скобках для первого найденного совпадения. Второй элемент (с индексом 1) содержит аналогичный массив для второго найденного совпадения и т. д.
Слайд 26Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция preg_replace( )
- работает точно так же, как и ereg_replасе( ), за
одним исключением — регулярные выражения могут использоваться в обоих параметрах, шаблон и замена.
Синтаксис:
preg_replace ( шаблон, замена, строка [, порог])
Необязательный параметр порог определяет максимальное количество замен в строке. Параметры шаблон и замена могут представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
Слайд 27Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция preg_replace( )
- работает точно так же, как и ereg_replасе( ), за
одним исключением — регулярные выражения могут использоваться в обоих параметрах, шаблон и замена.
Синтаксис:
preg_replace ( шаблон, замена, строка [, порог])
Необязательный параметр порог определяет максимальное количество замен в строке. Параметры шаблон и замена могут представлять собой масивы. Функция preg_replace( ) перебирает элементы обоих массивов и выполняет замену по мере их нахождения.
Слайд 28Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция preg_split( )
- аналогична split( ) за одним исключением — параметр шаблон
может содержать регулярное выражение.
Синтаксис:
preg_split (шаблон, строка [, порог [, флаги]])
Необязательный параметр порог определяет максимальное количество элементов, на которые делится строка.
Слайд 29Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Пример: выборка информации
из переменной.
$user_info="+WJ+++Gilmore+++++wjgilmore@hotmail.com
+++++++Columbus+++OH";
$fields = preg_split("/\+{1.}/", $user_info);
while ($x < sizeof($fields)):
print $fields[$x].
"
";
$x++;
endwhile;
Результат:
WJ
Gilmore
wjgilmore@hotmail.com
Columbus
OH
Слайд 30Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция preg_grep( )
- перебирает все элементы заданного массива и возвращает все элементы,
в которых совпадает заданное регулярное выражение. Синтаксис:
preg_grep ( шаблон, массив)
Пример: поиск в массиве слов, начинающихся на р:
$foods = array ("pasta", "steak", "fish", "potatoes");
$p_foods = preg_grep("/p(\w+)/", $foods):
$х = 0;
while ($x < sizeof($p_foods)) :
print $p_foods[$x]. "
";
$х++;
endwhile;
Результат:
pasta
potatoes
Слайд 31Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Дополнение и сжатие
строк
В процессе форматирования часто возникает необходимость в изменении длины строки
посредством дополнения или удаления символов. В РНР существует несколько функций, предназначенных для решения этой задачи.
Функция chop( )
- возвращает строку после удаления из нее завершающих пропусков и символов новой строки.
Пример:
$header = "Table of Contents\n\n";
$header = chop($header);
// $header = "Table of Contents"
Слайд 32Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция str_pad( )
- выравнивает строку до определенной длины заданными символами и возвращает
отформатированную строку. Синтаксис:
str_pad (строка, длина_дополнения [, дополнение [, тип_дополнения]])
Если параметр дополнение не указан, строка дополняется пробелами. В противном случае строка дополняется заданными символами.
По умолчанию строка дополняется справа; тем не менее, можно передать в параметре тип_дополнения константу STR_PAD_RIGHT, STR_PAD_LEFT или STR_PAD_BOTH, что приведет к дополнению строки в заданном направлении.
Слайд 33Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Пример:
$food = "salad";
print
str_pad ($food, 5): // Выводит строку "salad "
Пример:
$header
= "Table of Contents";
print str_pad ($header, 5, "=+=+=", STR_PAD_BOTH);
// В браузере выводится строка
=+=+= Таbе of Contents=+=+="
Слайд 34Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция trim( )
- удаляет все пропуски с обоих краев строки и возвращает
полученную строку. Синтаксис:
trim (строка)
К числу удаляемых пропусков относятся и специальные символы \n, \r, \t, \v и \0.
Функция ltrim( )
- удаляет все пропуски и специальные символы с левого края строки и возвращает полученную строку. Синтаксис:
ltrim (строка)
Функция удаляет те же специальные символы, что и функция trim( ).
Определение длины строки
Функция strlen( ): strlen (строка)
Слайд 35Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Сравнение двух строк
Функция
strcmp( )
- сравнивает две строки с учетом регистра символов.
Синтаксис:
strcmp (строка1, строка2)
После завершения сравнения strcmp( ) возвращает одно из трех возможных значений:
0, если строка1 и строка2 совпадают;
< 0, если строка1 меньше, чем строка2;
> 0, если строка2 меньше, чем строка1.
Пример:
$string1 = "butter";
$string2 = "butter";
if ((strcmp($string1, $string2)) == 0) :
print "Strings are equivalent!";
endif;
Слайд 36Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция strcasecmp( )
-
работает точно так же, как strcmp( ), но регистр символов
при сравнении не учитывается.
Пример
$string1 = "butter";
$string2 = "Butter";
if ((strcmp($string1, $string2)) == 0) :
print "Strings are equivalent!";
endif;
Слайд 37Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Обработка строковых данных
без применения регулярных выражений
Функция strtok( )
- разбивает строку на
лексемы по разделителям, заданным вторым параметром. Синтаксис:
strtok (строка, разделители)
Чтобы полностью разделить строку, функцию необходимо последовательно вызвать несколько раз. При очередном вызове функция выделяет из строки следующую лексему. При этом параметр строка задается всего один раз — функция отслеживает текущую позицию в строке до тех пор, пока строка не будет полностью разобрана на лексемы или не будет задан новый параметр строка.
Слайд 38Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Пример: разбиение строки
по нескольким разделителям:
$info = "John Smith: JohnSmith@hotmail.com | Phoenix, Arizona";
//
Ограничители - двоеточие (:), вертикальная черта (|) и запятая (,)
$tokens = ":|,";
$tokenized = strtok($info, $tokens);
// Вывод элементов массива $tokenized
while ($tokenized) :
echo "Element = $tokenized
";
// При последующих вызовах strtok первый аргумент не передается
$tokenized = strtok($tokens);
endwhile;
Слайд 39Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Пример: разбиение строки
по нескольким разделителям:
Результат:
Element = John Smith
Element = JohnSmith@hotmail.com
Element = Phoenix
Element
= Arizona
Слайд 40Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция parse_str( )
- выделяет в строке пары «переменная-значение» и присваивает значения переменных
в текущей области видимости. Синтаксис:
parse_str (строка)
Функция parse_str( ) особенно удобна при обработке URL, содержащих данные форм HTML или другую расширенную информацию.
Пример: анализируется информация, переданная через URL ( в гиперссылке, либо введена в форму HTML):
$url = "fname=John&lname=Smith&zip=43210";
parse_str($url);
// После выполнения parse_str( ) доступны следующие переменные:
// $fname = "John":
// $lname = "Smith";
// $zip = "43210"
Слайд 41Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция explode( )
- делит строку на элементы и возвращает эти элементы в
виде массива. Синтаксис: explode (разделитель, строка [, порог])
Разбиение происходит по каждому экземпляру разделителя, причем количество полученных фрагментов может ограничиваться необязательным параметром порог.
Пример:
$info = "wilson | baseball |indians";
$user = explode("|", $info);
// $user[0] = "wilson";
// $user[1] = "baseball";
// $user[2] = "Indians";
Функция explode( ) практически идентична функции регулярных выражений POSIX split( ). Различие: только при вызове split( ) допускается передача регулярных выражений в параметрах.
Слайд 42Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция implode( )
-
объединяет массив в строку. Синтаксис:
implode (разделитель, фрагменты)
Пример:
$ohio_cities = array ("Columbus",
"Youngstown", "Cleveland", "Cincinnati");
$city_string = implode("l", $ohio_cities);
// $city_string = "Columbus | Youngstown | Cleveland | Cincinnati";
У implode( ) имеется псевдоним — функция join( ).
Слайд 43Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция strpos( )
-
находит в строке первый экземпляр заданной подстроки. Синтаксис: strpos (строка,
подстрока [, смещение])
Параметр смещение задает позицию, с которой должен начинаться поиск. Если подстрока не найдена, strpos( ) возвращает FALSE (0).
Пример: определение позиции первого вхождения даты в файл журнала:
$log = "
206.169.23.11:/www/:2006-08-10
206.169.23.11:/www/logs/:2006-02-04
206.169.23.11:/www/img/:2007-01-31";
// В какой позиции в журнале впервые встречается 2007 год?
$pos = strpos($log, "2007");
//$pos = 95, поскольку первый экземпляр "2007" находится в позиции 95 строки, содержащейся в переменной $log
Слайд 44Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция strrpos( )
-
находит в строке последний экземпляр заданного символа. Синтаксис:
strrpos (строка, символ)
По
возможностям эта функция уступает функции strpos( ), поскольку позволяет искать только отдельный символ, а не всю строку.
Если параметре символ передается строка, при поиске будет использован только ее первый символ.
Слайд 45Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция str_replace( )
-
ищет в строке все вхождения заданной подстроки и заменяет их
новой подстрокой. Синтаксис:
str_replace (подстрока, замена, строка)
Пример: проведение глобальной замены в строке.
Если подстрока ни разу не встречается в строке, исходная строка не изменяется:
$favorite_food = "My favorite foods are ice cream and chicken wings";
$favorite_food = str_replace("chicken_wings", "pizza", $favohte_food);
// $favorite_food = "My favorite foods are ice cream and pizza"
Слайд 46Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция strstr( )
- возвращает часть строки, начинающуюся с первого вхождения заданной подстроки.
Синтаксис:
strstr (строка, подстрока)
Пример: выделение имени домена из URL:
$url = "http://www.yahoo.com"; $domain - strstr($url, ".");
// $domain = ".yahoo.com"
Слайд 47Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция substr( )
- возвращает часть строки, начинающуюся с заданной начальной позиции и
имеющую заданную длину. Синтаксис:
substr (строка, начало [, длина])
Если параметр длина не указан, считается, что подстрока начинается с заданной начальной позиции и продолжается до конца строки.
При использовании функции необходимо учитывать:
если параметр начало >0, возвращаемая подстрока начинается с позиции строки с заданным номером;
если параметр начало <0, возвращаемая подстрока начинается с позиции (длина строки - начало);
если параметр длина >0, в возвращаемую подстроку включаются все символы от позиции начало до позиции начало+длина. Если последняя величина превышает длину строки, возвращаются символы до конца строки;
если параметр длина <0, возвращаемая подстрока заканчивается на заданном расстоянии от конца строки.
Слайд 48Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция substr( )
Параметр начало определяет смещение от первого символа строки; таким образом,
возвращаемая строка в действительности начинается с символа с номером (начало + 1).
Пример: выделение части строки:
$car = "1944 Ford";
$model = substr($car, 6);
// $model = "Ford"
$model = substr($car, 0, 4);
// $model = "1944"
$model = substr($car, 2, -5);
// $model = "44"
Слайд 49Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция substr_count( )
- возвращает количество вхождений подстроки в заданную строку. Синтаксис:
substr_count (строка,
подстрока)
Пример: подсчет количества вхождений подстроки:
$tng_twist = "The rain falls mainly on the plains of Spain";
$count = substr_count($tng_twist, "ain");
// $count = 4
Слайд 50Функции РНР для работы с регулярными выражениями (Perl-совместимые)
Функция substr_replace( )
- заменяет часть строки, которая начинается с заданной позиции.
Если
задан параметр длина, заменяется фрагмент заданной длины; в противном случае производится замена по всей длине заменяющей строки.
Синтаксис:
substr_replace (строка, замена, начало [, длина])
Параметры начало и длина задаются по определенным правилам:
если параметр начало >0, замена начинается с заданной позиции;
если параметр начало <0, замена начинается с позиции (длина строки - начало);
если параметр длина >0, заменяется фрагмент заданной длины;
если параметр длина <0, замена завершается в позиции (длина строки - длина).
Слайд 51Преобразование текста в HTML
Функция nl2br( ) заменяет все символы новой
строки (\n) эквивалентными конструкциями HTML
. Синтаксис:
nl2br (строка)
Символы новой строки
могут быть как видимыми (то есть явно включенными в строку), так и невидимыми (например, введенными в редакторе).
Пример:
$text_recipe = "
Party Sauce recipe:
1 can stewed tomatoes
3 tablespoons fresh lemon juice
Stir together, server cold.";
$html_recipe = nl2br($text_recipe);
print $html_recipe;
Результат:
Party Sauce recipe:
1 can stewed tomatoes
3 tablespoons fresh lemon juice
Stir together, server cold.
Слайд 52Преобразование текста в HTML
Функция htmlentities( )
- преобразует символы в
эквивалентные конструкции HTML. Синтаксис:
htmlentities (строка)
Пример:
$user_input = "The cookbook, entitled 'Cafe
Francaise' costs < $42.25.";
$converted_input = htmlentities($user_input);
// $converted_input = "The cookbook, entitled 'Cafè Française' costs <$42.25.";
Результат:
Функция htmlentities( ) в настоящее время работает только для символов кодировки ISO-8559-1 (ISO-Latin-1).
Слайд 53Преобразование текста в HTML
Функция htmlspecialchars( )
- заменяет некоторые символы,
имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML. Синтаксис:
htmlspecialchars
(строка)
Функция htmlspecialchars( ) в настоящее время преобразует следующие символы:
& преобразуется в &
" " преобразуется в "
< преобразуется в <
> преобразуется в >.
Функция позволяет предотвратить ввод пользователями разметки HTML в интерактивных web-приложениях (например, в форумах).
Слайд 54Преобразование текста в HTML
Функция htmlspecialchars( )
Пример: удаление потенциально опасных
символов:
$user_input = "I just can't get «enough» of PHP &
those fabulous cooking recipes!";
$conv_input = htmlspecialchars($user_input);
// $conv_input = "I just can't <<enough>> of PHP & those fabulous cooking recipes!"
Если функция htmlspecialchars( ) используется в сочетании с nl2br( ), то последнюю следует вызывать после htmlspecialchars( ), иначе конструкции
, сгенерированные при вызове nl2br( ), преобразуются в видимые символы.
Слайд 55Преобразование текста в HTML
Функция strtr( )
- транслирует строку, то
есть заменяет в ней все символы, входящие в строку источник,
соответствующими символами строки приемник. Синтаксис:
strtr (строка, источник, приемник)
Если строки источник и приемник имеют разную длину, длинная строка усекается до размеров короткой строки.
Альтернативный синтаксис:
strtr (строка, массив)
Параметр массив — ассоциативный массив, ключи которого соответствуют заменяемым подстрокам, а значения — заменяющим подстрокам.
Слайд 56Преобразование текста в HTML
Функция strtr( )
Пример:
$source = array("" =>
"", " => "");
$string = "Today In PHP-Powered News";
print strtr($string,
$source);
// Выводится строка "Today in PHP-Powered News"
Слайд 57Преобразование HTML в простой текст
Функция strip_tags( )
- удаляет из
строки все теги HTML и РНР, оставляя в ней только
текст. Синтаксис:
strip_tags (строка [, разрешенные_тerи])
Пример:
$user_input = "Пример замены полужирного и курсивного текста обычным начертанием.";
$stripped_input = strip_tags ($user_input);
print $stripped_input;
$strip_input = strip_tags ($user_input, "");
print $strip_input;
Слайд 58Преобразование HTML в простой текст
Функция get_meta_tags( )
- предназначена для поиска
в файле HTML тегов МЕТА.
Синтаксис:
get_meta_tags (имя_файла/URL [, включение_пути])
Теги МЕТА содержат
информацию о странице, используемую главным образом поисковыми системами. Эти теги находятся внутри пары тегов ....
Функция get_meta_tags( ) ищет в заголовке документа теги, начинающиеся словом МЕТА, и сохраняет имена тегов и их содержимое в ассоциативном массиве.
Данные тегов МЕТА можно извлекать не только из файлов, находящихся на сервере, но и из других URL.
Слайд 59Преобразование HTML в простой текст
Пример: example.html
Примеры PHP
код, примеры, программирование, web">
">
Скрипт:
$meta_tags = get_meta_tags("example.html");
// Переменная $meta_tags содержит массив:
// $meta_tags["keywords"] = "PHP, код, примеры, программирование, web";
// $meta_tags["description"] = "Ресурс, посвященный программированию на PHP.";
// $meta_tags["author"] = "П.П.Иванов";
Слайд 60Преобразование строки к верхнему и нижнему регистру
Функция strtolower( )
-
преобразует все алфавитные символы строки к нижнему регистру. Синтаксис:
strtolower(строка)
Неалфавитные символы
функцией не изменяются.
Пример:
$sentence = "В этом ПРЕДЛОЖЕНИИ все СЛОВА набраны В НИЖНЕМ регистре.";
$sentence = strtolower($sentence);
Функция strtoupper()
- преобразование к верхнему регистру.
Неалфавитные символы функцией не изменяются.
Слайд 61Преобразование строки к верхнему и нижнему регистру
Функция ucfirst( )
-
преобразует к верхнему регистру первый символ строки — при условии,
что он является алфавитным символом. Синтаксис:
ucfirst (строка)
Неалфавитные символы функцией не изменяются.
Функция ucwords( )
- преобразует к верхнему регистру первую букву каждого слова в строке. Синтаксис:
ucwords (строка)
Неалфавитные символы функцией не изменяются.
«Слово» определяется как последовательность символов, отделенная от других элементов строки пробелами.
Слайд 62Пример: идентификация браузера
Чтобы пользователь мог просматривать страницу в формате, соответствующем
специфике его браузера и операционной системы, из входящего запроса на
получение страницы извлекается информация о браузере и платформе. После получения необходимых данных пользователь перенаправляется на нужную страницу.
Программа определяет тип и версию браузера и операционной системы, после чего выводит полученную информацию в окне браузера.
В стандартной переменной $HTTP_USER_AGENT в строковом формате хранятся различные сведения о браузере и операционной системе пользователя.
Пример:
Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)
Слайд 63Пример: идентификация браузера
Алгоритм:
Определить две функции для идентификации браузера и операционной
системы: browser_info( ) и opsys_info( ).
Функция browser_info( ):
Определить
тип браузера, используя функцию ereg( ).
Воспользоваться конструкцией if/elseif для идентификации следующих браузеров и их версий: Internet Explorer, Opera, Netscape и браузер неизвестного типа.
Вернуть информацию о типе и версии браузера в виде массива.
Функция opsys_info( ) определяет тип операционной системы.
Использовать функцию strstr( ).
Воспользоваться конструкцией if/elseif для идентификации следующих систем: Windows, Linux, UNIX, Macintosh и неизвестная операционная система.
Вернуть информацию об операционной системе.
Слайд 64Пример: идентификация браузера
= "IE";
$browse version = $version[1];
elseif (ereg( 'Opera ([0-9].[0-9]{1,2})'. $agent, $version)):
$browse_type
= "Opera":
$browse_version = $version[1]:
elseif (ereg( 'Mozilla/([0-9].[0-9]{1,2})'. $agent, $version)) :
$browse_type = "Netscape";
$browse_version = $version[1];
else :
$browse_type = "Unknown";
$browse_version = "Unknown";
endif:
return array ($browse_type, $browse_version);
}
Слайд 65Пример: идентификация браузера
function opsys_info($agent) {
if (strstr ($agent, 'win') ) :
$opsys
= "windows";
elseif ( strstr($agent, 'Linux') ) :
$opsys = "Linux";
elseif (
strstr ($agent, 'Unix') ) :
$opsys = "Unix";
elseif ( strstr ($agent, 'Mac') ) :
$opsys = "Macintosh";
$opsys = "Unknown";
endif;
return $opsys;
}
Слайд 66Пример: идентификация браузера
list ($browse_type, $browse_version)=browser_info($HTTP_USER_AGENT);
$operating_sys = opsys_info ($HTTP_USER_AGENT);
print "Browser
Type: $browse_type
";
print "Browser Version: $browse_version
";
print "Operating System: $operating_sys
";
?>
Например, если пользователь работает в браузере Netscape 4.75 на компьютере с системой Windows, будет выведен результат:
Browser Type: Netscape
Browser Version: 4.75
Operating System: Windows