У меня есть 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
Вам не нужно регулярное выражение здесь. Вы можете взорваться с /
и получить последний элемент массива
$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);
Есть два лучших / более эффективных способа, чем использование шаблона регулярных выражений с 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',
)