これを何と呼ぶべきか正確にはわかりませんでした..とにかく:
次のもので構成されるテキストファイルがあります。
something;something2;something3;something4\n
ユーザー入力には通常の html フォームを使用します。ユーザー入力 = $search. これを検索機能に送信します。
function search($search) {
$lin = file('text.txt');
$lines = array_map('strtolower', $lin);
$found = false;
foreach($lines as $line) {
if(strpos($line, $search) !== false) {
$found = true;
$line = explode(";",$line);
$line[1] = ucwords($line[1]);
$line[2] = ucwords($line[2]);
$line[3] = strtoupper($line[3]);
echo "$hit[0] $hit[1] etc";
}
}
if(!$found) {
echo "No matches";
}
}
これは、ユーザーが単語を 1 つだけ入力した場合にうまく機能します。ファイルの内容が foo;bar;chuck;hank; であるとしましょう。
ユーザーが「foouck」を検索しても結果が得られるようにしたいと思います。一致する単語が 1 つだけの場合でも、その行をエコーする必要があります (例: "foo carl" は行全体を出力します)。
ただし、「foo;bar」と「foo;carl」がある場合、ユーザーが「foo carl」を検索した場合に foo bar を表示したくありません。
任意のヒント?