在PHP中列出数组中包含特定单词的所有元素

在PHP中列出数组中包含特定单词的所有元素,php,arrays,search,strpos,Php,Arrays,Search,Strpos,我正在尝试使用PHP为我的网站创建搜索功能。现在,我有这段代码来创建一个目录中所有文件的数组,它工作得很好,但我的下一步遇到了障碍。我希望它现在列出数组中包含某个单词的所有元素(用户搜索),这样我可以在以后的HTML中使用它们。我的想法是创建一个循环,为每个元素运行strpos,并只列出它找到的匹配项。我试过了,但总是一无所获。这是我诚实的尝试: <?php $search = "Pitfall"; foreach (new RecursiveIteratorIterat

我正在尝试使用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";
            } 
        }
    }
?>


感谢您的帮助

我认为您的问题在于您的条件:

if($pos==true)

strpos()
不返回true。它返回字符串的位置或false。看见您可以改为使用:

if($pos!==false)

编辑:

递归运算符不返回字符串。它返回一个对象。这里我正在键入对象,以便它获得正确的文件名。从这里开始,您不需要再次迭代,因为此时这只是一个字符串

$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 />";
    }
}
$search=“wp config”;
foreach(新的递归迭代器(新的递归目录迭代器('.'))作为$filename)
{
$filename=(字符串)$filename;
如果(is_dir($filename))继续;
$pos=strpos($filename,$search);
如果($pos!==false){
回显“$filename
”; } }
请记住,使用与
==
相反的
==
将检查值和类型是否相等,这就是为什么true在这里不起作用的原因
if($pos==true)
将计算.Hmmm,尝试了,但结果仍然相同。没有回声,因为没有匹配的。。。我们无法查看您的数据集,因此无法确定。如果您可以提供在
$filename
中找到的数据,您是否尝试过调试
$pos
?尝试
var\u转储($pos)
如果您回显每个
$result
,您是否得到了预期的结果?