Q:

Как найти в строке файл и удалить его из строки

2018/05/IMG_5116-150x150.jpg
2018/05/IMG_5075-150x150.jpg
2018/05/IMG_5040-150x150.jpg

все строки содержат название файла после поиска и замены мне нужно чтобы в них остались только даты  
2018/05
2018/05
2018/05
2018/05

вообще изначально строки выгялдят так:
http://сайт/wp-content/uploads/2018/05/IMG_5116-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5075-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5040-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5024-150x150.jpg

первую часть я очистил с помощью
$str = str_replace('http://сайт/wp-content/uploads/', '', $str);

но если есть способ с помощью одной функции вытащить из строки пару (2018/05),будет идеально
пока в голове есть только решение сделать из строки массив и достать из него нужные элементы, но это мне кажется будет большей нагрузкой, если вдруг есть альтернативный способ сделать то что мне надо за раз

A:

Можно написать шаблон с поиском четырёх идущих подряд цифр \d{4}, разделённых слешем /, после которого следуют ещё две цифры \d{2}
$str = 'http://сайт/wp-content/uploads/2018/05/IMG_5116-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5075-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5040-150x150.jpg
http://сайт/wp-content/uploads/2018/05/IMG_5024-150x150.jpg';

preg_match_all('~\d{4}/\d{2}~', $str, $arr);

var_dump($arr);

Результат - массив дат:
array (size=1)
  0 => 
    array (size=4)
      0 => string '2018/05' (length=7)
      1 => string '2018/05' (length=7)
      2 => string '2018/05' (length=7)
      3 => string '2018/05' (length=7)

