Как удалить $_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
Другие вопросы по тегам