Mit PHP filtert, um eine Textdatei in ein A-Z Angebot
-
16-09-2019 - |
Frage
Ich habe eine Textdatei, die lautet:
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
Was ich tun muß, ist, ich brauche einen A-Z-Eintrag erstellen ... so:
# 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
und wenn Sie auf den Buchstaben klicken, wird es einen Tisch bringen, mit nur Wörter mit A fängt an, wenn ich A geklickt und nur die Wörter mit Zahlen beginnen, wenn ich das Zeichen # geklickt hat.
Ich dachte, einen regulären Ausdruck zu verwenden, dies zu erreichen, aber ich will nicht 27 verschiedene Seiten erstellen. So ist es eine Möglichkeit, den Brief am Ende der URL zu nennen? wie etwas zu schaffen, die dies tun
http://mywebsite/directory.php?letter=A
Lösung
Ein sehr einfacher Ansatz:
Lesen Sie in der Textdatei:
$inputfile = file('words.txt');
Dann, nach dem Eingang Hygienisierung ($letter = $_GET['letter']
), können Sie einen regulären Ausdruck erstellen:
$regex = '/^'.$letter.'/i';
und filtern Sie die Zeilen, die Sie wollen zeigen:
$result = preg_grep($regex, $inputfile);
ist der Rest dann einfach eine Frage der netten HTML ausgibt (oder was auch immer der Ausgang wird sein)
Beachten Sie: Wenn die Seiten häufig gelesen werden, ist es viel schneller ist die Datei in einer Datenbank gespeichert zu haben. Sie sollten auch einen Blick in Caching-Mechanismen nehmen, wenn Last ein Problem zu einem bestimmten Zeitpunkt in der Zukunft sein solle
Edit: vergaß zu erwähnen: die #
Funktion zu erhalten, müssen Sie eine Linie entlang der folgenden hinzuzufügen:
if ($letter == '#') $letter = '[0-9]';
die Regex wieder zu arbeiten.
Andere Tipps
Ja.
Sie können diese Variable zugreifen, was zu bestimmen, sortieren, indem Sie
$letter = $_GET["letter"]
$arrayCount = preg_match('/^'.$letter."./", $textFileContents, $matches);
So etwas sollte funktionieren
Das wäre verrückt, wenn Sie nur ein paar Namen in der Datei haben.
Wenn Sie sein müssen schrecklich dynamische Cron sagen zwischenzuspeichern 26 Text-Dateien von Ihrer zentralen Datei pro Stunde / Tag etc
a.htm etc
Einmal täglich tut mir, ich meine Benutzer erzogen zu verstehen, dass es sich dabei, wie sie ihre Website verhalten würde.
(A-Z von etwa 10 verschiedenen Anwendungen Content erstellt wird)