Поиск строк \ в строке - PullRequest
       0

Поиск строк \ в строке

0 голосов
/ 24 сентября 2011

Вот загадка. У меня есть переменная, которая содержит пути к файлам компьютера. Мне нужно отделить имя файла от пути.

Пример: Из этого:

$filepath = C:\\User\Me\Myfiles\file.jpg

Мне нужно это:

$path = C:\\User\Me\Myfiles\
$file = file.jpg

Я знаю, как получить подстроки $ filepath, используя substr. Проблема заключается в использовании «\» в качестве «иглы» для получения позиции имени файла.

Это вызывает ошибку:

$pos = strrpos("\",$filepath);

Это не вызывает ошибку, но не дает мне значение для $ pos:

$pos = strrpos("\\",$filepath);

Как всегда, любая помощь с помощью моей вечной благодарности.

Ответы [ 3 ]

3 голосов
/ 24 сентября 2011
$pos = strrpos("\\",$filepath);

Это пытается найти позицию $filepath в строке "\\". Если $filepath не является одиночной обратной косой чертой, позиция не возвращается.

Вы хотите поменять местами два аргумента.

$pos = strrpos($filepath, "\\");

Кроме того, basename($filepath) или pathinfo($filepath, PATHINFO_BASENAME) можно использовать для получения имени файла.

0 голосов
/ 24 сентября 2011
preg_match('#^(.+)\\\\(.+)$#', $filepath, $matches);
$path = $matches[1];
$file = $matches[2];

Это работает, потому что квантор + regex жадный, поэтому он будет соответствовать всем символам, которые он может \ - с двойным экранированием, один раз для строки PHP и один раз для регулярного выражения.

0 голосов
/ 24 сентября 2011

Посмотрите на вывод pathinfo($filepath), или для подхода oo, на доступные методы SplFileInfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...