Как вести файловый путь в PHP? - PullRequest
0 голосов
/ 18 ноября 2009

Что-то вроде:

/directory/a/b - /directory/ = a/b

Можно ли сделать это легко?

Ответы [ 3 ]

1 голос
/ 18 ноября 2009

Поскольку вы работаете с путями, важна чувствительность платформы; В Windows есть разделитель пути, отличный от большинства других платформ, и для написания кода многократного использования вы не можете использовать платформу.

PHP имеет несколько функций для работы с путями. Если вы получили действительно странный путь, такой как ~foo/bar//bitty/../index.php, используйте realpath, чтобы очистить его для вас.

$path = realpath("~foo/bar//bitty/../index.php");
/* output: /home/foo/bar/index.php */

Другие функции помогут вам - например, чтобы получить часть пути имени файла, используйте dirname:

print dirname($path);
/* output: /home/foo/bar */

Как только вы это сделаете, разделитесь на разделители и делайте любую работу, какую хотите. Настоящая хитрость заключается в том, чтобы PHP беспокоился обо всех странностях путей, а затем просто работал с каждой частью отдельно. Посмотрите на pathinfo и basename. Я думаю, что это то, о чем вы просили, а не о том, как делать глупые замены строк.

Не забудьте запретить инъекцию в ваше приложение! Работа с путями из веб-ввода опасна. Никогда не доверяйте пользовательскому вводу.

0 голосов
/ 18 ноября 2009

Используя функцию dirname () и некоторые строки, вы можете сократить исходный путь и получить кусочки.

<?php
// from:   http://php.net/manual/en/function.dirname.php
$path = "/dirname/a/b";
$dir = dirname(dirname($path)); 
echo "dir at front=$dir\n";
$len = strlen($dir);
$dirname = substr ( $path, 0, $len+1 );
echo "dirname=$dirname\n";
$last_2 = substr ( $path, $len+1 );
echo "last_2=$last_2\n";
?>

результаты в

$ php x.php
dir at front=/dirname
dirname=/dirname/
last_2=a/b
0 голосов
/ 18 ноября 2009
echo str_replace("/directory/","","/directory/a/b");

И чтобы использовать это для других типов строк, ваша полная строка указывается в третьем параметре, а все, что вы «вычитаете» - в качестве первого параметра.

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