С помощью PHP фильтруйте текстовый файл в список A-Z.

StackOverflow https://stackoverflow.com/questions/1862933

Вопрос

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

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 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
Это было полезно?

Решение

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

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

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

Затем, ПОСЛЕ очистки ввода ($letter = $_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 текстовых файлов из вашего центрального файла каждый час/день и т. д.

а.htm и т. д.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top