2017-09-05 50 views
0

我期待改善我的腳本,但我不知道在哪裏或如何開始。超過確切的輸入,並有相關的輸入回顯

因此,我的總體目標是使用我的PHP腳本通過一個帶有txt文件的文件夾進行grep,並且對於我放入其中的任何搜索都會在txt文件中的那一行之後回顯該內容。

所以,我提出過的任何學期我搜索的HTML文件的請求,可以說這是「測試」,該請求是通過我下面的PHP文件和目錄文件時,搜索檢查處理術語「測試」和文件目錄中有很多變化「測試」多個txt文件,例如:

test1 
test example 
test3945 

我想有它呼應不論整條生產線,以提高該腳本搜索詞可能是,所以如果我搜索只是「測試」,這將不僅帶來了「TEST1」,「測試」,「test3945」,但也將有包括文字對「同一行的其餘部分testexample「。

我已經在我的代碼中包含了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

刪除-w選項給grep。

-w,--word,正則表達式力模式來匹配全字

$ grep -hir test files/*.txt 
test1 
test example 
test3945 
0

如果我讀正確的事情,你想有一個搜索詞,接着該行的其餘部分。您可能想要使用sed進行簡單搜索/替換。

sed -n "s/.*test/test/p" inputfile > outputfile

,上面寫着:

  • sed -n:只打印到OUTPUTFILE如果指示
  • s/.*test/test/p:含testtestp打印線test之前刪除一切。

您可以通過與一個shell變量替換test任意搜索詞腳本這一點。