Как удалить $ _SERVER ['DOCUMENT_ROOT'] из заданной строки в PHP - PullRequest
0 голосов
/ 03 марта 2010

Как я могу удалить $_SERVER['DOCUMENT_ROOT'] из строки, подобной этой /home/bla/test/pic/photo.jpg

результат должен выглядеть так /test/pic/photo.jpg

Мне также нужно взять photo.jpg из /test/pic/photo.jpg

.

Ответы [ 3 ]

4 голосов
/ 03 марта 2010

Если ваш 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
1 голос
/ 03 марта 2010
$new_string = str_replace($_SERVER['DOCUMENT_ROOT'], '', $string);
$photo = basename($string);

Ссылки:
- http://de.php.net/str_replace
- http://de.php.net/basename

0 голосов
/ 03 марта 2010

.........

echo basename(str_replace($_SERVER['DOCUMENT_ROOT'], '', '/home/bla/test/pic/photo.jpg'));

// output: photo.jpg
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...