Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
php учебник_весь.doc
Скачиваний:
8
Добавлен:
21.09.2019
Размер:
2.06 Mб
Скачать

Методы put и post

Методы HTTP PUT и HTTP POST предназначены для загрузки файлов на сервер.

Протокол HTTP предоставляет три метода для работы с информацией, находящейся на Web-сервере: GET, PUT и POST. Метод GET применяется для получения Web-страниц, при этом все переменные формы передаются в URL. Поскольку на многих Web-серверах установлено ограничение на максимальную длину URL (как правило, не более 1024), не стоит применять метод GET, если требуется передача данных большего объема.

Метод PUT применяется для обновления информации на сервере, и требует, чтобы содержимое запроса HTTP PUT сохранялось на сервере. Запрос выглядит таким образом:

PUT /path/filename.html HTTP/1.1

В этом случае Web-сервер должен сохранить содержимое этого запроса в виде /path/filename.html в пространстве имен URL Web-сервера. По умолчанию сам Web-сервер не выполняет такие запросы, а задает CGI-сценарий для их обработки. В Apache назначить сценарий для обработки PUT-запросов, можно изменив директиву Script, находящуюся в файле httpd.conf, к примеру, так:

Script PUT /cgi-bin/put.cgi

Это означает, что обрабатывать PUT-запросы будет CGI-скрипт put.cgi.

Как правило, для загрузки файлов на сервер используют метод HTTP POST. Этот метод позволяет передавать большие объемы данных из формы и сохраняет все переменные формы в теле запроса.

7. Регулярные выражения

Ранее для поиска в строке подстроки мы использовали строковые функции, ограничиваясь при этом случаями точного соответствия строк и подстрок. Для работы со строками можно использовать также регулярные выражения, представляющие собой, по сути, мини-язык описаний для поиска в строках информации по заданному шаблону.

С помощью регулярных выражений можно найти в строке подстроку, удовлетворяющую заданному шаблону и извлечь ее, проверить существует ли заданная строка и т.д.

Алгоритм поиска с использованием регулярных выражений был впервые разработан одним из создателей UNIX Кеном Томпсоном. Интересно, что изначально регулярные выражения появились не в теории вычислительных систем, а в нейрофизиологии. Основу теории регулярных выражений заложили нейрофизиологи У. Мак-Каллох и У. Питтс, работавшие над способами математического описания нервных процессов. Позднее математик С. Клини, основываясь на этих исследованиях, опубликовал работу "Представление событий в нейронных сетях", в которой и было введено понятие регулярных выражений. Кен Томпсон, основываясь на этих работах, адаптировал теорию регулярных выражений для алгоритмов поиска информации. Именно начиная с его работ, регулярные выражения стали использоваться в текстовых редакторах и вошли во многие языки программирования.

Базовый синтаксис и создание регулярных выражений

Простейшее регулярное выражение можно записать так:

"abc"

Это выражение соответствует любой строке, которая содержит подстроку "abc".

Существует такое понятие, как выражение в квадратных скобках. Квадратные скобки ограничивают поиск теми символами, которые в них заключены:

"[abc]"

Этому регулярному выражению соответствует любая строка, содержащая abc либо вместе, либо каждый из них в отдельности. Выражение в квадратных скобках иногда еще называют бра-кет выражением.

Допустим, нам нужно создать регулярное выражение, соответствующее всем буквам русского алфавита. В этом случае мы можем, конечно, перечислить все эти буквы в регулярном выражении. Это допустимо, но утомительно и неэлегантно. Более коротко такое регулярное выражение можно записать следующим образом:

"[а-Я]"

Это выражение соответствует всем буквам русского алфавита, поскольку любые два символа, разделяемые дефисом, задают соответствие диапазону символов, находящихся между ними. Заметьте, что регулярное выражение "[а-Я]" описывает символы как нижнего, так и верхнего регистров, поэтому более подробно это выражение можно записать так:

"[а-яА-Я]"

Точно таким же образом задаются регулярные выражения, соответствующие числам:

"[0-9]"

или

"[0123456789]"

Оба этих выражения эквивалентны и соответствует любой цифре.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]