С помощью PHP отфильтруйте текстовый файл в список A-Z - PullRequest
0 голосов
/ 08 декабря 2009

У меня есть текстовый файл, который гласит:

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

и когда вы щелкнете по букве, появится таблица, содержащая только слова, начинающиеся с буквы А, если я щелкнул А, и только слова, начинающиеся с цифр, если я нажал знак #.

Я думал об использовании регулярного выражения для достижения этой цели, но я не хочу создавать 27 разных страниц. Так есть ли способ позвонить письмо в конце URL? как создание чего-то, что будет делать это

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

Ответы [ 3 ]

2 голосов
/ 08 декабря 2009

Очень простой подход:

Прочитать в текстовом файле:

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

Затем, ПОСЛЕ дезинфекции ввода ($letter = $_GET['letter']), вы можете построить регулярное выражение:

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

и отфильтруйте строки, которые вы хотите показать:

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

остальное - это просто вопрос вывода хорошего HTML (или любого другого результата)


Имейте в виду: когда страницы часто читаются, гораздо быстрее сохранить файл в базе данных. Вам также следует взглянуть на механизмы кэширования, если в будущем может возникнуть проблема с загрузкой


Редактировать: забыл упомянуть: Чтобы заставить # работать, вам нужно добавить строку следующего содержания:

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

чтобы заставить регулярное выражение снова работать.

0 голосов
/ 08 декабря 2009

Это было бы безумием, если в файле нет только нескольких имен.

Если вы не должны быть ужасно динамичным, велите Cron кэшировать 26 текстовых файлов из вашего центрального файла каждый час / день и т. Д.

a.htm и т. Д.

Однажды в день я научил своих пользователей понимать, как их сайт будет вести себя.

(A-Z создается из примерно 10 различных приложений)

0 голосов
/ 08 декабря 2009

Да.

Вы можете получить доступ к этой переменной, чтобы определить, что сортировать, используя

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

Нечто подобное должно работать

...