Как извлечь только имя файла из строки URL

У меня есть URL-адрес, в котором структура первой части всегда изменяется, а последняя часть — нет.

Используя этот URL в качестве ввода:

https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/17438789_1884899458414605_8605163171642081280_a.jpg

Я хотел бы захватить:

/17438789_1884899458414605_8605163171642081280_a.jpg

Могу ли я использовать preg_match() за это?

Другие захваченные имена файлов будут выглядеть так:

/17438789_1884899458414605_8605163171642081280_a.jpg
/17438789_111111111111_862222222222222642081280_a.jpg
/1741111111111789_1555555555605_812222222081280_a.jpg

-1

Решение

Вам не нужно регулярное выражение здесь. Вы можете взорваться с / и получить последний элемент массива

$str=" https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/17438789_1884899458414605_8605163171642081280_a.jpg";
$array=explode("/",$str);
echo end($array);
0

Другие решения

Есть два лучших / более эффективных способа, чем использование шаблона регулярных выражений с preg_match() создать массив одного элемента или используя explode() создать многоэлементный массив только для извлечения последнего элемента.

Входные данные:

$str="https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/17438789_1884899458414605_8605163171642081280_a.jpg";

Метод № 1 — Конкат / с базовое ():

echo "/",basename($str);

Метод № 2 — поиск / с strrpos () Внутри зиЬзЬг ():

echo substr($str,strrpos($str,"/"));

Вывод (используя любой метод):

/17438789_1884899458414605_8605163171642081280_a.jpg

Заметка Используя любой из вышеуказанных методов с array_map (), вы можете быстро сгенерировать отфильтрованный массив из массива полных URL-адресов всего одной строкой кода.

$array=['https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/17438789_1884899458414605_8605163171642081280_a.jpg',
'https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/17438789_111111111111_862222222222222642081280_a.jpg',
'https://ig-s-b-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/1741111111111789_1555555555605_812222222081280_a.jpg'];

$array=array_map(function($v){return "/".basename($v);},$array);
var_export($array);

Выход массива:

array (
0 => '/17438789_1884899458414605_8605163171642081280_a.jpg',
1 => '/17438789_111111111111_862222222222222642081280_a.jpg',
2 => '/1741111111111789_1555555555605_812222222081280_a.jpg',
)
0

По вопросам рекламы [email protected]