列出数组中包含 PHP 中特定单词的所有元素
List all elements in array containing certain word in PHP
我正在尝试使用 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()
不 return 正确。它 returns 字符串的位置或 false。参见 docs。您可以改用:
if ($pos !== false)
已编辑:
RecusiveIteratorIterator 不是 return 字符串。它 return 是一个对象。在这里,我对对象进行类型转换,以便它获得正确的文件名。从那里开始,您不需要再次迭代,因为此时这只是一个字符串。
$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 />";
}
}
我正在尝试使用 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()
不 return 正确。它 returns 字符串的位置或 false。参见 docs。您可以改用:
if ($pos !== false)
已编辑:
RecusiveIteratorIterator 不是 return 字符串。它 return 是一个对象。在这里,我对对象进行类型转换,以便它获得正确的文件名。从那里开始,您不需要再次迭代,因为此时这只是一个字符串。
$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 />";
}
}