Главная / Программирование /
Язык программирования PHP / Тест 13
Язык программирования PHP - тест 13
Упражнение 1:
Номер 1
У функции preg_match
следующий синтаксис: preg_match(pattern, string, [result, flags])
. Функция preg_match
осуществляет сопоставление регулярного выражения с некоторой строкой. Что она возвращает в качестве результата?
Ответ:
 (1) функция возвращает 0 или 1 в зависимости от того, удалось сопоставить образец или нет 
 (2) функция возвращает целое число от 0 до некоторого n
в зависимости от количества сопоставлений регулярного выражения 
 (3) функция возвращает минимальную подстроку, с которой удалось сопоставить регулярное выражение 
Номер 2
У функции preg_match_all
следующий синтаксис preg_match_all(pattern, string, result, [flags])
. Функция preg_match_all
осуществляет сопоставление регулярного выражения с некоторой строкой. Что она возвращает в качестве результата?
Ответ:
 (1) функция возвращает 0 или 1 в зависимости от того, удалось или нет сопоставить образец 
 (2) функция возвращает целое число от 0 до некоторого n
в зависимости от количества сопоставлений регулярного выражения 
 (3) функция возвращает минимальную подстроку, с которой удалось сопоставить регулярное выражение 
Упражнение 2:
Номер 1
Какова структура регулярного выражения?
Ответ:
 (1) общая структура регулярного выражения: шаблон, выделенный с помощью специального символа разделителя, модификатор, влияющий на способ обработки регулярного выражения 
 (2) общая структура регулярного выражения: шаблон, выделенный с помощью специального символа разделителя 
 (3) общая структура регулярного выражения: шаблон, заключенный в круглые скобки, и функция для его обработки 
Номер 2
Каково назначение метасимволов в регулярном выражении?
Ответ:
 (1) метасимволы предназначены для того, чтобы кодировать альтернативы и повторения 
 (2) метасимволы предназначены для описания информации о символах 
 (3) метасимволы предназначены для того, чтобы закодировать непечатные символы 
Номер 3
Каково назначение метасимвола обратный слэш ("\")
?
Ответ:
 (1) он меняет тип символа, следующего за ним, на противоположный, т.е. если это был обычный символ, то он может превратиться в метасимвол. Если это был метасимвол, то он теряет свое специальное значение и становится обычным символом. 
 
(2)
назначение обратного слэша – кодирование непечатных символов, таких как
\n
- cимвол перевода строки;
\e
- символ escape;
\t
- cимвол табуляции и т.д.
 
 
(3)
назначение обратного слэша – обозначение генерируемых символьных типов, таких как
\d
- любая десятичная цифра (0-9);
\D
– любой символ, не являющийся десятичной цифрой;
\s
– любой пустой символ (пробел или табуляция) и др.
 
Упражнение 3:
Номер 1
Каково назначение метасимвола "^"
?
Ответ:
 (1) отрицание класса, но только если это первый символ 
 (2) задает диапазон символов 
 (3) вычисляет символьный класс 
 (4) обозначает начало строки 
Номер 2
Назначение метасимвола "-"
?
Ответ:
 (1) отрицание класса, но только если это первый символ 
 (2) задает диапазон символов 
 (3) вычисляет символьный класс 
Номер 3
Назначение метасимвола "]"
?
Ответ:
 (1) отрицание класса, но только если это первый символ 
 (2) задает диапазон символов 
 (3) вычисляет символьный класс 
Упражнение 4:
Номер 1
С помощью каких метасимволов выделяется начало подшаблона и его конец?
Ответ:
 (1) []
 
 (2) ()
 
 (3) {}
 
Номер 2
Что такое квантификаторы?
Ответ:
 (1) метасимволы, задающие количественные отношения повторений 
 (2) метасимволы, которые определяют символьный класс 
 (3) метасимволы, которые определяют подшаблон 
Номер 3
За какими элементами могут следовать квантификаторы?
Ответ:
 (1) одиночный символ (возможно, в комбинации с обратным слэшем), метасимвол точка 
 (2) символьный класс, обратная ссылка, подшаблон 
Упражнение 5:
Номер 1
Что делает следующая функция?
function Test($str){
$pattern = "/\d{3}-\d{2}-\d{2}/m";
$num_match = preg_match_all ($pattern, $str, $result);
return $num_match;
}
Ответ:
 (1) возвращает число встреченных в строке семизначных комбинаций цифр, записанных в виде: три цифры, тире, две цифры, тире, две цифры 
 (2) возвращает 0 или 1 в зависимости от того, встречена ли в строке семизначная комбинация цифр, записанных в виде: три цифры, тире, две цифры, тире, две цифры 
 (3) возвращает число встреченных в строке семизначных комбинаций цифр, состоящих из цифр 3 и 2 
Номер 2
Что делает следующая функция?
function Test($str){
$pattern = "/\d{1,3}-\d{2}-\d{1}/m";
$num_match = preg_match ($pattern, $str, $result);
return $num_match;
}
Ответ:
 (1) возвращает число встреченных в строке комбинаций цифр, записанных в виде: от одной до трех цифр, тире, две цифры, тире, одна цифра 
 (2) возвращает 0 или 1 в зависимости от того, встречена ли в строке комбинация цифр, записанных в виде: от одной до трех цифр, тире, две цифры, тире, одна цифра 
 (3) возвращает число встреченных в строке комбинаций цифр, записанных в виде: 123-22-1 
Номер 3
Что делает следующая функция?
function Test1($str1){
$pattern = " /\d{3}$/";
$num_match = preg_replace($pattern, "aaa", $str1);
return $num_match;
}
Ответ:
 (1) заменяет первые встреченные три цифры в строке на «aaa
» и возвращает true
если замена сделана и false
противном случае 
 (2) заменяет любые три цифры в строке на «aaa
» и возвращает полученную строку, если замена была сделана или исходную строку, если совпадение не было найдено 
 (3) заменяет любые три цифры в конце строки на «aaa
» и возвращает полученную строку, если замена была сделана или исходную строку, если совпадение не было найдено 
 (4) заменяет любые три цифры и идущий за ними знак «$
» на «aaa
» и возвращает полученную строку, если замена была сделана или исходную строку, если совпадение не было найдено 
Упражнение 6:
Номер 1
Написать функцию проверяющую, является ли строка правильным email-адресом в зонах с 2-мя или 3-мя буквами (например, .com или .ru)
Ответ:
 (1)
<?php
function ValidateEmail($str)
{
$pattern = "/^\w+(\.\w+)*@\w+(\.\w+)*\.\w{2,3}$/";
$num = preg_match($pattern, $str, $result);
return $num;
}
?>
 
 (2)
<?php
function ValidateEmail($str)
{
$pattern = "/\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}/";
$num = preg_match_all($pattern, $str, $result);
return $num;
}
?>
 
 (3)
<?php
function ValidateEmail($str)
{
$pattern = "/^\w+@\w+\.\w{2,3}$/";
$num = preg_match($pattern, $str, $result);
return $num;
}
?>
 
Номер 2
Написать функцию, выделяющую из строки содержимое всех html-тегов
Ответ:
 (1)
function GetTags($str)
{
$res = preg_match_all ("/(<(\w+)[^>]*>)(.*)(<\/\\2>)/", $str, $matches);
return $res;
}
 
 (2)
function GetTags($str)
{
preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\w+>)/", $str, $matches);
return $matches[0];
}
 
 (3)
function GetTags($str)
{
preg_match_all ("/(<([\w]+)[^>]*>)(.*)(<\/\\2>)/", $str, $matches);
return $matches[0];
}
 
Номер 3
Выделить из URL адреса ресурса имя хоста
Ответ:
 (1)
<?php
preg_match ("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/test/index.html", $matches);
echo "Host:", $matches[2];
?>
 
 (2)
<?php
preg_match ("/^(http:\/\/)?([^\/]+)/i", "http://www.php.net/test/index.html", $matches);
echo "Host:", $matches[0];
?>
 
 (3)
<?php
preg_match ("/^(http://)(\w+[^\/]+)/i", "http://www.php.net/test/index.html", $matches);
echo "Host:", $matches[2];
?>