PHP仅获取完整路径的一部分

时间:2010-03-11 19:29:13

标签: php string path

我想知道如何只减去完整路径的一部分:

我得到当前文件夹的完整路径:

$dbc_root = getcwd(); // That will return let's say "/home/USER/public_html/test2"

我只想选择“/ public_html / test2”

我该怎么办? 谢谢!

7 个答案:

答案 0 :(得分:4)

我认为你应该检查路径相关的方法:

pathinfo() - Returns information about a file path
dirname() - Returns directory name component of path
basename() - Returns filename component of path

您应该能够找到其中一种解决方案。

答案 1 :(得分:1)

取决于格式的固定方式。最简单的形式:

$dbc_root = str_replace('/home/USER', '', getcwd());

如果您需要在public_html之后获取所有内容:

preg_match('/public_html.*$/', getcwd(), $match);
$dbc_root = $match;

答案 2 :(得分:1)

<?php
function pieces($p, $offset, $length = null)
{
  if ($offset >= 0) $offset++; // to adjust for the leading /
  return implode('/', array_slice(explode('/', $p), $offset, $length));
}

echo pieces('/a/b/c/d', 0, 1); // 'a'
echo pieces('/a/b/c/d', 0, 2); // 'a/b'
echo pieces('/a/b/c/d', -2); // 'c/d'
echo pieces('/a/b/c/d', -2, 1); // 'c'
?>

答案 3 :(得分:0)

好吧,如果你知道你要丢弃的路径部分是什么,你可以简单地做一个str_replace:

$dbc_root = str_replace('/home/USER/', '', $dbc_root);

答案 4 :(得分:0)

您可以使用空字符串替换/home/USER

$path=str_replace("/home/USER", "", getcwd());

答案 5 :(得分:0)

    $dbc_root = getcwd(); // That will return let's say "/home/USER/public_html/test2"
    $dbc_root .= str_replace('/home/USER', '', $dbc_root); // Remember to replace USER with the correct username in your file ;-)

在此之后,$dbc_root应该没有/ home / USER

我没有测试,如果你想为此创建一个新的var ... 你可以尝试:

   $slim_dbc_root = str_replace('/home/USER', '', $dbc_root);

我希望这会帮助你走向正确的方向

答案 6 :(得分:0)

试试这个“/ home / pophub / public_html /”是你要从getcwd()中删除的文本

$dir = getcwd();
$dir1 = str_replace('/home/pophub/public_html/', '/', $dir);
echo $dir1;