2017-09-05 3 views
0

私はスクリプトを改善するつもりですが、どこから始めるべきかわかりません。正確な入力よりも多くの部分をグリップし、関連する入力をエコーし​​ました

私の全体的な目標は、私のPHPスクリプトを使ってtxtファイルを含むフォルダをグレープすることです。私が置いた検索のために、txtファイルのその1行の後にすべてをエコーし​​ます。

だから、私は私が検索何語用のHTMLファイルを介して要求を提出し、それが「テスト」だったと言うことができます、要求は私のPHPの以下のファイルやディレクトリファイルを介して処理される検索にチェックされています用語「テスト」とファイルのディレクトリは多くのバリエーションで、「テスト」と、複数のTXTファイルを持って、例えば:

test1 
test example 
test3945 

私はそれが何の行全体をエコー持っていることによって、このスクリプトを改善したいです検索語句があった可能性があります私はちょうど「テスト」で検索、それは「test1の」、「テスト」、「test3945」を育てていただけでなく、 "のための同じ行のテキストの残りの部分が含まれているだろう試験 "。

自分のコードにUTF-8文字のサポートを追加しました。これは、私の全体的な目標の代わりに正確なリストを取得している理由のためです。

<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ファイルです:

はここに私のHTMLファイルです(search.php)

header("content-type: text/html; charset=UTF-8"); 
echo "<pre>"; 
system('grep -hwir ' . escapeshellarg($_POST['query']) . 
'*files/*.txt'); 
echo "</pre>"; 

答えて

0

をgrepする-wオプションを削除してください。

-w、私は物事が右に読む場合は、行の残りの部分に続いて、検索用語をしたいだけで、全体の単語

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

に一致するように--word-正規表現力パターン。シンプルな検索/置換のためにsedを使いたいかもしれません。

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

言うこと:

  • sed -nを:
  • s/.*test/test/pに指示された場合のみ、OUTPUTFILEに印刷:testpプリントでtestを含む行にtest前に、すべてのものを削除します。

testをシェル変数に置き換えて、これを任意の検索キーワードでスクリプトすることができます。

関連する問題