Вы можете сделать это с помощью explode
, array_slice
и implode
:
implode('_', array_slice(explode('_', $str), 1, -1))
С explode
строка разбивается на части в _
, поэтому в результате получается массив, подобный следующему:
array('File', 'Test', 'name', '1285931677.xml')
С array_slice
захватывается все от второго до второго последнего, например:
array('Test', 'name')
Затем его объединяют, используя implode
, в результате чего:
Test_name
Другой подход заключается в использовании strrpos
и substr
:
substr($str, 5, strrpos($str, '_')-5)
Поскольку File_
имеет фиксированную длину, мы можем использовать 5 в качестве начальной позиции.strrpos($str, '_')
возвращает позицию последнего вхождения _
.Вычитая 5 из этой позиции, мы получаем расстояние от пятого символа до позиции последнего вхождения, которую мы используем в качестве длины подстроки.