2017-12-27 148 views
0

我有一個PHP代碼,可以讀取文本文件並允許用戶完美地搜索單詞及其作品。使用PHP如何讀取多個TEXT文件並顯示文件名?

文件內容是阿拉伯語

當用戶進行搜索,系統會顯示與它存在的行號申請的字符串。

我現在想要的是讓系統讀取多個文本文件,當用戶請求一個單詞時,系統將顯示他找到用戶請求的文件的名稱。

這是可能的,如果我有100個文件,這個過程需要多長時間?

代碼:

<?php 

$myFile = "arabic text.txt"; 

$myFileLink = fopen($myFile, 'r'); 

$line = 1; 

if(isset($_POST["search"])) 
{ 
    $search =$_POST['name']; 

while(!feof($myFileLink)) 
{ 
    $myFileContents = fgets($myFileLink); 
    if(preg_match_all('/('.preg_quote($search,'/').')/i', $myFileContents, $matches)) 
    { 

     foreach($matches[1] as $match) 
     { 
      echo "Found $match on Line $line"; 
     } 

    } 

    ++$line; 

} 

} 

fclose($myFileLink); 

//echo $myFileContents; 
?> 

<html> 
    <head> 
    </head> 
    <meta http-equiv="Content-Language" content="ar-sa"> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <body> 
    <form action="index.php" method="post"> 
      <p>enter your string <input type ="text" id = "idName" name="name" /></p> 
      <p><input type ="Submit" name ="search" value= "Search" /></p> 
    </form> 
    </body> 
</html> 
+0

我會在執行函數建議grep命令,請參考此答案https://stackoverflow.com/a/17231293/6582942 – pravindot17

+0

@ pravindot17首先我使用PHP和我需要閱讀的文字內容文件。 –

+0

我知道這就是爲什麼我建議使用php的exec函數來運行linux的grep – pravindot17

回答

0

所以,你必須把你目前的工作代碼放到一個函數,用函數返回你想要的內容。

function readFile($fileName) 
{ 
    // ...your code 
    return $yourMessage; 
} 

$fileNames = array("file1.txt", "file2.txt"); 
$result = array(); 
foreach($fileNames as $name) 
{ 
    $message = readFile($name); 
    $result[$name] = $message; 
} 

您現在可以遍歷$ result並以您自己想要的方式打印它。

+0

我希望系統讀取指定目錄中存在的TEXT文件,我不想強​​制使用文件名,因爲每天都會添加更多文件。 –

0

要將所有文件放入一個數組中,您可以使用scandir('/ mydir /')。

$files = scandir('/mydir/here/'); 
foreach($files as $file) { 
    if (strpos($file, '.txt')) { 
     //dosomething 
    } 
} 
相關問題