Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP将文本文件过滤到a-Z列表中_Php_Regex_Preg Replace_Preg Match - Fatal编程技术网

使用PHP将文本文件过滤到a-Z列表中

使用PHP将文本文件过滤到a-Z列表中,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我有一个文本文件,内容如下: 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 我需要做的是我需要创建一个a-Z列表。。。因此: # A B

我有一个文本文件,内容如下:

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
我需要做的是我需要创建一个a-Z列表。。。因此:

# 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

一个非常简单的方法:

在文本文件中读取:

$inputfile = file('words.txt');
然后,在清理输入(
$letter=$\u GET['letter']
)之后,您可以构建一个正则表达式:

$regex = '/^'.$letter.'/i';
并筛选要显示的行:

$result = preg_grep($regex, $inputfile);
剩下的就是简单地输出漂亮的HTML(或者任何输出)


请记住:经常读取页面时,将文件存储在数据库中的速度要快得多。如果将来某个时候负载会成为问题,您还应该研究缓存机制


编辑:忘记提及:要使
#
正常工作,需要沿以下内容添加一行:

if ($letter == '#') $letter = '[0-9]';
使正则表达式重新工作。

您可以访问该变量,通过使用

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

像这样的东西应该会起作用,除非你的文件中只有几个名字,否则这太疯狂了

除非你必须非常动态,否则告诉Cron每小时/天从你的中心文件中缓存26个文本文件等等

a、 htm等

我每天都会教育我的用户,让他们明白这就是他们网站的行为方式


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

好的,我会记住数据库,谢谢您的回复。我会让你知道结果的!