Как разбить файловый путь и получить последний элемент?

351
01 февраля 2017, 00:01

Пытаюсь получить файловый путь в php7:

$keywords = preg_split("/[\\,]+/", dirname($filename));

Как получить последний элемент если строка:

upload/iblock/faa/file.jpg
Answer 1

Для получения последней секции строк пути с помощью регулярных выражений вы можете использовать, например, следующий вариант: ([\w\s]+)\/?$. Последний слэш опциональный. В \w\s попадают символы A-Za-z0-9_ и пробел. Можно дополнить, добавив туда, например, А-Яа-я-, и т.п.

preg_match("/([\w\s]+)\/?$/", "/upload/iblock/faa/", $matches);
print_r($matches);

В первой группе будет искомая строка:

Array (
    [0] => faa/
    [1] => faa
)

В целом, зная о функции dirname(), которую вы используете в своем коде, вы, наверное, также знаете и о функции basename(), возвращающей как раз последний элемент пути, а так же pathinfo(), SplFileInfo::getFilename. Для получения пути можно даже разбить его с помощью explode() и достать последний элемент, используя array_pop. Поэтому если ваша задача - работать с путями, а не тренировать регулярные выражения, то используете соответствующие функции.

READ ALSO
Найти дубли записей в базе

Найти дубли записей в базе

Здравствуйте40 тыс

323
Что будет если не закрыть соединение curl_close()?

Что будет если не закрыть соединение curl_close()?

Через ajax выполняю php-код, с помощью curl авторизуюсь и выполняю кодТаких ajax-запросов может быть очень много за день

390
Как перехватить кнопку “назад” браузера?

Как перехватить кнопку “назад” браузера?

На странице используется JavaScript, пользователь может изменить вид страницыПри переходе по ссылке на другую страницу того же сайта и затем...

658
Как отсечь градиент

Как отсечь градиент

В общем думал как реализовать освещение в 2d игре, нашел вот такой замечательный пример http://codepenio/ilovepixel/pen/qBjCH

365