phpist

Untitled

Oct 20th, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.71 KB | None | 0 0
  1. как сделать пример рабочим
  2.  
  3. Пример второй
  4. Давайте теперь рассмотрим другой пример. Нам нужно разбить полное имя файла на
  5. две составляющие: имя каталога, в котором расположен файл, и само имя файла. Как
  6. мы знаем, для этого в PHP встроены функции basename() и dirname() , рассмотренные
  7. выше. Но предположим для тренировки, что их нет. Вот как мы реализуем требуемые
  8. действия:
  9. $slash1 = strrpos($fullPath, '/');
  10. $slash2 = strrpos($fullPath, '\\');
  11. $slash = max($slash1, $slash2);
  12. $dirName = substr($fullPath, 0, $slash);
  13. $filename = substr($fullPath, $slash + 1, 10000);
  14. Здесь мы воспользовались тем фактом, что функция strrpos() возвращает значение
  15. false , которое интерпретируется как 0, если искомый символ не найден. Обратите вни-
  16. мание на то, что пришлось два раза вызывать strrpos() , потому что мы не знаем, какой
  17. слеш будет получен от пользователя — прямой или обратный. Видите — код все уве-
  18. личивается. И уменьшить его почти невозможно.
  19. З АМЕЧАНИЕ
  20. На самом деле, эта проблема выглядит немного надуманной. Куда как проще и, главное,
  21. надежнее было бы сначала заменить в строке все обратные слеши прямыми, а потом
  22. искать только прямые. Однако в данном случае такой прием несколько отдалил бы нас от
  23. техники регулярных выражений, которой и посвящена глава.
  24. Опять же, сформулируем словами то, что нам нужно: "Часть слова после последнего
  25. прямого или обратного слеша или, в крайнем случае, после начала строки присвой пе-
  26. ременной $fileName , а „начало строки“ — переменной $dirName ". Формулировку "часть
  27. слова после последнего слеша" можно заменить несколько другой: "Часть слова, перед
  28. которой стоит слеш, но в нем самом слеша нет".
Advertisement
Add Comment
Please, Sign In to add comment