0

次のようなテキスト ファイルがあります。

9123 Bellvue Court
5931 Walnut Creek rd.
Andrew
Bailey
Chris
Drew
Earl
Fred
Gerald
Henry
Ida
Jake
Koman
Larry
Manny
Nomar
Omar
Perry
Quest
Raphael
State
Telleman
Uruvian
Vixan
Whales
Xavier
Yellow
Zebra

私がしなければならないことは、AZ リストを作成する必要があるということです。

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

文字をクリックすると、A をクリックすると A で始まる単語のみが表示され、# 記号をクリックすると数字で始まる単語のみが表示されます。

これを実現するために正規表現を使用することを考えていましたが、27 の異なるページを作成したくありません。それで、URLの最後にある文字を呼び出す方法はありますか? これを行う何かを作成するような

http://mywebsite/directory.php?letter=A
4

3 に答える 3

2

非常に単純なアプローチ:

テキスト ファイルを読み取ります。

$inputfile = file('words.txt');

次に、入力をサニタイズした後 ( $letter = $_GET['letter'])、正規表現を作成できます。

$regex = '/^'.$letter.'/i';

表示する行をフィルタリングします。

$result = preg_grep($regex, $inputfile);

残りは単に素敵なHTMLを出力することです(または出力が何であれ)


注意: ページが頻繁に読み取られる場合は、ファイルをデータベースに保存する方がはるかに高速です。将来的に負荷が問題になる場合は、キャッシング メカニズムも検討する必要があります。


編集:言及するのを忘れました:#作業を行うには、次の行を追加する必要があります:

if ($letter == '#') $letter = '[0-9]';

正規表現が再び機能するようにします。

于 2009-12-07T21:21:03.113 に答える
0

ファイルにいくつかの名前しかない場合を除き、それは気が狂います。

ひどく動的である必要がない限り、毎時間/日などに中央ファイルから26個のテキストファイルをキャッシュするようにCronに指示します

a.htmなど

私は 1 日に 1 回、サイトがこのように動作することをユーザーに理解させるように教育しました。

(約10種類のアプリコンテンツからAZを作成)

于 2009-12-07T21:52:22.390 に答える
0

はい。

その変数にアクセスして、次を使用してソートする対象を決定できます

$letter = $_GET["letter"]
$arrayCount = preg_match('/^'.$letter."./", $textFileContents, $matches);

そのようなものはうまくいくはずです

于 2009-12-07T21:22:08.557 に答える