列出包含PHP

时间:2015-10-16 04:51:02

标签: php arrays search strpos

我正在尝试使用PHP为我的网站制作搜索功能。现在,我有这个代码来创建一个目录中所有文件的数组,这很好用,但是我的下一步遇到了麻烦。我希望它现在列出该数组中包含某个单词的所有元素(用户搜索),这样我以后可以用HTML做一些事情。我的想法是创建一个循环,为每个元素运行strpos,并仅列出它找到匹配的元素。我试过了,但它总是没有给我任何东西。这是我诚实的尝试:

<?php
    $search = "Pitfall";

    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename)
    {
        if ($filename->isDir()) continue;

        foreach ($filename as &$result)
        {
            $pos = strpos($result, $search);

            if ($pos === true) {
                echo "$result\n";
            } 
        }
    }
?>

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我认为您的问题与您的条件有关:

if ($pos === true)

strpos()不会返回true。它返回字符串的位置或false。见docs。你可以改用:

if ($pos !== false)

<强>编辑:

RecusiveIteratorIterator不返回字符串。它返回一个对象。在这里,我将对象进行类型转换,以便获取正确的文件名。从那里,你不需要再次迭代,因为这只是一个字符串。

$search = "wp-config";

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename)
{
    $filename = (string) $filename;

    if (is_dir($filename)) continue;

    $pos = strpos($filename, $search);

    if ($pos !== false) {
        echo "$filename <br />";
    }
}