- •Размещение файлов на сервере
- •Задание
- •Теория и примеры
- •1 Загрузка (upload) файлов на сервер
- •Upload_err_ok – значение: 0. Отсутствие ошибки, признак успешной загрузки файла
- •Upload_err_no_tmp_dir – значение: 6. Отсутствует директория для временного сохранения файла
- •Обработка загруженного файла
- •2 Обработка данных формы
- •3 Работа с файлами
- •Пример 7 Чтение в строку файла с удаленной машине
- •Пример 8 Открытие и запись в файл с контролем ошибок
- •Чтение строки из файла fgets.
- •Достигнут ли конец файла – feof.
- •Смотри примеры № № 5, 7
- •Смотри примеры выше
- •4 Работа с датой и временем
- •5 Регулярные выражения
5 Регулярные выражения
Регулярные выражения используются для сложных манипуляций со строками. Существует несколько типов регулярных выражений, различающихся по синтаксису, например регулярные выражения языка Perl или регулярные выражения, определенные в стандарте POSIX 1003.2. В языке PHP можно использовать регулярные выражения этих типов. Рассмотрим кратко синтаксис POSIX (для дополнительной информации см. man 7 regex).
Некоторые специальные символы:
. – один любой символ.
? – предыдущий символ может повторяться от 0 до 1 раз.
* – предыдущий символ может повторяться 0 и более раз.
+ – предыдущий символ может повторяться 1 и более раз.
[ ] – список символов, соответствует любому отдельному символу из списка. Если список начинается с ^, то такое выражение соответствует любому отдельному символу не из списка. [a-zA-Z] –любой символ латинского алфавита. [^0-9] – любой символ, кроме цифр.
{ } – интервал повторения предыдущего символа: {n} – предыдущий символ повторяется ровно n раз, {n, m} – предыдущий символ может повторяться от n до m раз включительно (n не больше m), {n,} – предыдущий символ может повторяться n и более раз.
( ) – регулярное выражение внутри скобок воспринимается как один символ.
| – логическое ИЛИ.
^ – начало строки.
$ – конец строки.
\ – отменяет специальное значение последующего символа.
Примеры:
^$ – пустая строка,
[-+]?[0-9]+ – целое число.
[0-7]+ – восьмеричное число.
[0-9a-fA-F]+ – шестнадцатеричное число.
[0-9a-fA-F]+[hH]{1} – допустимая запись шестнадцатеричного числа в ассемблере.
0(x|X)[0-9a-fA-F]+ – допустимая запись шестнадцатеричного числа в Си.
Поиск регулярного выражения – ereg.
int ereg (string pattern, string str [, array ®s])
Просматривает строку str в поиске соответствий регулярному выражению pattern (учитывается регистр символов). Возвращает длину подстроки, совпавшей с регулярным выражением pattern, либо false, если совпадений нет. Если задан третий аргумент, найденные совпадения помещаются в массив regs. Элемент $regs[1] будет содержать подстроку, соответствующую части регулярного выражения в первых скобках, $regs[2] – подстроку, соответствующую части регулярного выражения во вторых скобках. Элемент $regs[0] будет содержать подстроку, совпавшую со всем регулярным выражением.
В примере 17 ищется дата в ISO формате (YYYY-MM-DD) и выводится в формате DD.MM.YYYY:
Пример 17 Использование ereg().
<?php
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs)) {
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "неправильный формат даты: $date";
}
?>
Пример 18 Проверка корректности записи идентификатора переменной языка PHP.
<?php
$php_vars = array('$_RighT_1', '$8_wrong', 'C_right_8');
$reg_exp_php_var = '^\$[A-Za-z_][A-Za-z0-9_]*$';
foreach($php_vars as $item){
if(ereg($reg_exp_php_var, $item))
echo $item;
else
echo $item . ' не ';
echo "правильная запись идентификатора переменной языка PHP\n";
}
?>
Резултат работы:
$_RighT_1 правильная запись идентификатора переменной языка PHP
$8_wrong не правильная запись идентификатора переменной языка PHP
C_right_8 не правильная запись идентификатора переменной языка PHP