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 个不同的页面。那么有没有办法在网址末尾调用字母?就像创造可以做到这一点的东西

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

是的。

您可以访问该变量以确定使用什么进行排序

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

像这样的东西应该工作

于 2009-12-07T21:22:08.557 回答
0

除非您在文件中只有几个名字,否则那会很疯狂。

除非您必须非常动态地告诉 Cron 每小时/每天从您的中央文件缓存 26 个文本文件等

a.htm 等

每天一次,我教育我的用户了解这就是他们的网站的行为方式。

(AZ 由大约 10 个不同应用程序的内容创建)

于 2009-12-07T21:52:22.390 回答