我想构建一个搜索模块,用户在其中输入一个文本,该文本应该搜索特定目录中的所有文件。我用过这个代码:
$path_to_check = 'E:/xampp/htdocs/talent_orbit/test/';
$needle = 'test';
foreach(glob($path_to_check.'*.txt') as $filename)
{
//print_r(file($filename));
foreach(file($filename) as $fli=>$fl)
{
echo $f1;
if(strpos($fl, $needle)!==false)
{
echo $filename.' on line '.($fli+1).': '.$fl;
}
}
}
但它只适用于.txt文件,应该在.doc文件中搜索。我还将glob($path_to_check.'*.txt') as $filename)
更改为glob($path_to_check.'*.doc') as $filename)
,但它没有显示结果。请帮我一下。
编辑:
我也尝试了这个的解决方案
php > exec("egrep -rl 'string of what I want to find' full-or-relative-directory", $output);
php > print_r($output);
Array
(
[0] => full-or-relative-directory/foo/bar.xml
)
php > $contents = file_get_contents($output[0]);
它显示了Array(),我不知道在"完整目录或相对目录"之间应该放什么,我指的是路径。
我的代码:-
php > exec("egrep -rl 'rakesh' E:/xampp/htdocs/talent_orbit/test/", $output);
php > print_r($output);
如果不可能,我可以将doc文件转换为txt文件,然后在该txt文件中搜索吗
提前谢谢。
这是不可能的。文档文件不是"纯文本"文件。试着在编辑器中打开它,你会看到的。搜索*.txt
和*.xml
文件是可行的,因为它们基本上都是纯文本文件。文档文件中包含二进制数据。
一个解决方案是PHP的doc解析器(例如这个),但它需要一个脚本来循环遍历文件,用解析器打开每个文件并搜索字符串。