Как удалить $_SERVER['DOCUMENT_ROOT'] из заданной строки в PHP
Как я могу удалить $_SERVER['DOCUMENT_ROOT']
из такой строки /home/bla/test/pic/photo.jpg
результат должен выглядеть следующим образом /test/pic/photo.jpg
Мне также нужно взять photo.jpg из /test/pic/photo.jpg
3 ответа
Если ваш 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);
Обратите внимание ^
в начале регулярного выражения (чтобы указать, что оно должно совпадать только в начале строки) - и не забудьте экранировать специальные символы из корня документа, используя preg_quote
,
И чтобы получить имя файла, когда у вас есть путь, содержащий каталог + имя, вы можете использовать basename
функция; например, эта часть кода:
echo basename('/test/pic/photo.jpg');
Даст вам этот вывод:
photo.jpg
$new_string = str_replace($_SERVER['DOCUMENT_ROOT'], '', $string);
$photo = basename($string);
Ссылки:
- http://de.php.net/str_replace
- http://de.php.net/basename
.........
echo basename(str_replace($_SERVER['DOCUMENT_ROOT'], '', '/home/bla/test/pic/photo.jpg'));
// output: photo.jpg