構造化データを何らかのデータベースに保存することをお勧めします。たとえば、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);