Функция. Разработка с нуля. Требуется написать 2 регулярных выражения для функции preg_match() 1. Каждый смысловой фрагмент регулярки нужно закомментировать. Для этого использовать модификатор x. Пример будет дан. 2. Написать функцию, получающую на вход url-адрес и возвращающую массив следующего вида: (на примере: protocol://subdomain.domain3.domain2.zone:port/folder/subfolder/../././//../myfolder/script.php?var1=val1&var2=val2) array( 'protocol' => 'protocol', 'domain' => 'subdomain.domain3.domain2.zone', 'zone' => 'zone', '2_level_domain' => 'domain2.zone', 'port' => 'port', 'raw_folder' => 'folder/subfolder/../././//../myfolder/', 'folder' => 'myfolder/', 'script_path' => 'myfolder/script.php', 'script_name' => 'script.php', 'is_php' => true, 'parameters' => array( 'var1' => 'val1', 'var1' => 'val1', ), 'is_error' =>false ) 3. любая часть выражения может отсутствовать. если отсутствует протокол, то url определяется как относительный путь, пояснение будет дано 4. если количество поддоменов > 5, устанавливать флаг ошибки (is_error) 5. для пути к файлу на сервере вычислить его действительное (folder) и введенное (raw_folder) значения: учесть следующие конструкции: ./ - остаемся в той же папке ../ - поднимаемся на уровень вверх (но нельзя выйти за доменное имя!) много // - эквивалентно / вычисление пути оформить отдельной функцией 6. если не указан сценарий, но есть строка параметров, то значит указать сценарий index.php: (для myfolder/?var1=val1&var2=val2) 'script_name' => 'index.php', 7. строка параметров может содержать вопросы: ?var1=is_it_ok?&or=not? 8. если параметры в строке параметров повторяются, то правильное значение - в последнем 9. Тесты будут также даны.