我希望改进我的剧本,但我不知道在哪里或如何开始。
所以,我的总体目标是使用我的PHP脚本来浏览带有txt文件的文件夹,对于我放入的任何搜索,它将在txt文件中的那一行之后回显那些和所有内容。
所以,我通过html文件提交了一个请求,无论我搜索的是什么词,我们都说它是" test ",请求是通过下面的PHP文件处理的,检查目录 files 以查找搜索字词" test "和files目录有多个txt文件" test "在许多变体中,例如:
test1
test example
test3945
我想改进这个脚本,让它回显搜索术语的全部内容,所以如果我只搜索" test "它会有不仅提出了" test1 " ," 测试" ," test3945 " ,但也会在" 测试 示例"的同一行中包含其余文本。
我的原始代码中包含了UTF-8字符支持,这可能是我获取确切列表而非我的总体目标的原因。
这是我的HTML文件:
<form method="POST" action="search.php" class="search"
enctype="multipart/form-data">
<input type="text" name="query" maxlength=75 minlength=3
placeholder="enter data" required>
<input type="submit" value="Search">
</input>
</form>
这是我的PHP文件:(search.php)
header("content-type: text/html; charset=UTF-8");
echo "<pre>";
system('grep -hwir ' . escapeshellarg($_POST['query']) .
'*files/*.txt');
echo "</pre>";
答案 0 :(得分:0)
删除grep的-w
选项。
-w, - word-regexp强制PATTERN仅匹配整个单词
$ grep -hir test files/*.txt
test1
test example
test3945
答案 1 :(得分:0)
如果我读得正确,你需要一个搜索词,然后是其余部分。您可能希望使用sed进行简单搜索/替换。
sed -n "s/.*test/test/p" inputfile > outputfile
那说:
sed -n
:如果指示s/.*test/test/p
:删除包含test
并test
和test
打印的行中p
之前的所有内容。 您可以使用shell变量替换test
,使用任意搜索字词对此进行编写。