Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- как сделать пример рабочим
- Пример второй
- Давайте теперь рассмотрим другой пример. Нам нужно разбить полное имя файла на
- две составляющие: имя каталога, в котором расположен файл, и само имя файла. Как
- мы знаем, для этого в PHP встроены функции basename() и dirname() , рассмотренные
- выше. Но предположим для тренировки, что их нет. Вот как мы реализуем требуемые
- действия:
- $slash1 = strrpos($fullPath, '/');
- $slash2 = strrpos($fullPath, '\\');
- $slash = max($slash1, $slash2);
- $dirName = substr($fullPath, 0, $slash);
- $filename = substr($fullPath, $slash + 1, 10000);
- Здесь мы воспользовались тем фактом, что функция strrpos() возвращает значение
- false , которое интерпретируется как 0, если искомый символ не найден. Обратите вни-
- мание на то, что пришлось два раза вызывать strrpos() , потому что мы не знаем, какой
- слеш будет получен от пользователя — прямой или обратный. Видите — код все уве-
- личивается. И уменьшить его почти невозможно.
- З АМЕЧАНИЕ
- На самом деле, эта проблема выглядит немного надуманной. Куда как проще и, главное,
- надежнее было бы сначала заменить в строке все обратные слеши прямыми, а потом
- искать только прямые. Однако в данном случае такой прием несколько отдалил бы нас от
- техники регулярных выражений, которой и посвящена глава.
- Опять же, сформулируем словами то, что нам нужно: "Часть слова после последнего
- прямого или обратного слеша или, в крайнем случае, после начала строки присвой пе-
- ременной $fileName , а „начало строки“ — переменной $dirName ". Формулировку "часть
- слова после последнего слеша" можно заменить несколько другой: "Часть слова, перед
- которой стоит слеш, но в нем самом слеша нет".
Advertisement
Add Comment
Please, Sign In to add comment