Если ваш DocumentRoot соответствует части строки, которую вы хотите удалить, решением может быть использование str_replace
:
echo str_replace($_SERVER['DOCUMENT_ROOT'], '', '/home/bla/test/pic/photo.jpg');
Но учтите, что у вас возникнут проблемы с содержанием $_SERVER['DOCUMENT_ROOT']
, которое присутствует где-то в вашей строке: оно будет удаляться каждый раз.
Если вы хотите убедиться, что он удален только из начала строки, можно использовать некоторое регулярное выражение:
$docroot = '/home/bla';
$path = '/home/bla/test/pic/photo.jpg';
echo preg_replace('/^' . preg_quote($docroot, '/') . '/', '', $path);
Обратите внимание на ^
в начале регулярного выражения (чтобы указать, что оно должно совпадать только в начале строки) - и не забудьте убрать специальные символы из вашего документа root, используя preg_quote
.
А чтобы получить имя файла, когда у вас есть путь, содержащий каталог + имя, вы можете использовать функцию basename
; например, эта часть кода:
echo basename('/test/pic/photo.jpg');
Даст вам этот вывод:
photo.jpg