在php中查找文件的目录路径

时间:2014-05-21 10:06:19

标签: php search-engine

我对创建搜索引擎以查找文件的目录路径有疑问。

例如,考虑这是更新的代码,

 <?php

$files = array();
if(isset($_POST['submit'])) {
    $file_to_search = $_POST['file'];
    $root_path = "C:\\xampp\\htdocs\\cat\\"; // your doc root

    foreach ($iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($root_path, 
            RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST) as $value) {

        if($value->getFilename() == $file_to_search) {
            $files[] = $value->getPathname();
        }   
    }
}

?>

<form method="POST" action="index1.php">
    File To Search: <input type="text" name="file" /><br/>
    <input type="submit" name="submit" value="Search" />
</form>

<?php if(!empty($files)): ?>
<div id="output">
    <?php foreach($files as $value) {
        echo "$value<br/>";
    } ?>
</div>
<?php endif; ?>

我想创建搜索引擎,用于查找某个文件的确切目录路径。

任何人都可以帮助我吗?提前谢谢。

3 个答案:

答案 0 :(得分:0)

您想要的是glob()功能,以搜索文件

http://www.php.net/manual/en/function.glob.php

答案 1 :(得分:0)

你应该使用这个2内置函数

当前目录的名称

echo basename(__DIR__); 

当前文件的名称

echo basename(__FILE__); 

FILE 获取当前文件路径

// Current file fullpaths
$current_file = str_replace('\\','/',__FILE__);

答案 2 :(得分:0)

关于获取完全目录路径的问题,如果某个文件,或者您可以使用RecursiveDirectoryIterator搜索您想知道它在哪里的文件

让我们说,我有这样的结构:

/var/
  /www/
      /test/
         /images/
             /images1/
                 image.png <--- this one for example
                 image.jpg
             /images2/
                 image3.png

假设您要搜索 image.png 。考虑这个例子:

$file_to_search = 'image.png';
$root_path = '/var/www/test'; // your doc root

foreach ($iterator = new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator($root_path, 
        RecursiveDirectoryIterator::SKIP_DOTS),
    RecursiveIteratorIterator::SELF_FIRST) as $value) {

    if($value->getFilename() == $file_to_search) {
        echo $value->getPathname();
    }   
}

// should output: /var/www/test/images/images1/image.png

上述代码的简单应用:

<?php

$files = array();
if(isset($_POST['submit'])) {
    $file_to_search = $_POST['file'];
    $root_path = '/var/www/test'; // your doc root

    foreach ($iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($root_path, 
            RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST) as $value) {

        if($value->getFilename() == $file_to_search) {
            $files[] = $value->getPathname();
        }   
    }
}

?>

<form method="POST" action="index.php">
    File To Search: <input type="text" name="file" /><br/>
    <input type="submit" name="submit" value="Search" />
</form>

<?php if(!empty($files)): ?>
<div id="output">
    <?php foreach($files as $value) {
        echo "$value<br/>";
    } ?>
</div>
<?php else: ?>
    <?php if(isset($_POST['submit'])) echo 'no file found'; ?>
<?php endif; ?>