超过精确输入并使相关输入回显

时间:2017-09-05 04:33:08

标签: php html grep echo

我希望改进我的剧本,但我不知道在哪里或如何开始。

所以,我的总体目标是使用我的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>";

2 个答案:

答案 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:如果指示
  • ,则只打印到outputfile
  • s/.*test/test/p:删除包含testtesttest打印的行中p之前的所有内容。

您可以使用shell变量替换test,使用任意搜索字词对此进行编写。