2012-06-09 86 views
-2

PHP搜索並顯示結果我想要做的是,我有一個看起來像這樣的文件:關鍵字

Blue = 1 = No = 20, 
Arctic color = 2 = No = 20, 
Pink = 3 = No = 20, 
Arctic blue color = 4 = No = 20, 
Red = 5 = No = 20, 
Orange = 6 = No = 20, 

比方說,一個用戶類型的短語「北極彩」變成了形式。我想讓我的代碼執行的是顯示所有包含短語「北極顏色」的行。所以代碼應該回顯:

Arctic color = 2 = No = 20, 
Arctic blue color = 4 = No = 20, 

我該如何做到這一點?任何幫助將高度讚賞!

+0

因此,你想採取的第一個單詞的查詢和搜索它?搜索詞是否需要在行首?來吧,給我們更多的細節。 – ddlshack

+0

[WhatHaveYouTried.com](http://whathaveyoutried.com)? –

+0

我想採取完整的搜索查詢,並查找查詢中的任何單詞是否在文件的任何行中找到。如果是這樣,我希望腳本回顯包含查詢中任何一個單詞的行。 – S17514

回答

1

我會建議將結構化數據存儲在某種數據庫中。例如,mysql。 然後你可以發出LIKE查詢。通過左側的通配符,可以執行全表掃描,這可能不是問題,具體取決於您擁有的行數。

如果您需要更高性能的解決方案,則需要將數據轉換爲更容易搜索的格式。


如果你只是想解決您的具體問題:

要查找與所有的字線:

$query = 'arctic color'; 

$terms = array_filter(array_map('trim', explode(" ", $query))); 
$results = array(); 

foreach(file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) { 
    $found = true; 

    foreach($terms as $term) { 
     if(strpos($line, $term) === false) { 
      $found = false; 
      break; 
     } 
    } 

    if($found) { 
     $results[] = $line; 
    } 
} 

print_r($results); 

找到與某些詞語的線:

$query = 'arctic color'; 

$terms = array_filter(array_map('trim', explode(" ", $query))); 
$results = array(); 

foreach(file('file.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) as $line) { 
    $found = false; 

    foreach($terms as $term) { 
     if(strpos($line, $term) !== false) { 
      $found = true; 
      break; 
     } 
    } 

    if($found) { 
     $results[] = $line; 
    } 
} 

print_r($results);