PHP filtre ile bir A-Z liste içine Textfile

3 Cevap php

Ben okuyan bir metin dosyası var:

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

Ne yapmam gerekiyor bu yüzden ... Bir AZ liste oluşturmak için ihtiyaç vardır:

# 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

ve ben A tıkladım ve ben # işaretini tıklandığında ise sadece kelimeler sayılarla başlayan eğer A ile birlikte başlayan tek kelime ile bir tablo getirecektir harfine tıkladığınızda.

Bunu gerçekleştirmek için normal bir ifade kullanarak düşünüyordum ama 27 farklı sayfaları oluşturmak istemiyorum. Yani url sonunda mektubu aramak için bir yolu var mı? bu yapacak bir şey yaratma gibi

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

3 Cevap

Çok basit bir yaklaşım:

Metin dosyasında okuyun:

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

Daha sonra, girişi sterilize SONRA ($letter = $_GET['letter']), bir regex inşa edebilirsiniz:

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

ve göstermek istediğiniz satırları filtrelemek:

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

Gerisi o zaman sadece güzel bir HTML (veya ne olursa olsun çıkış olacaktır) çıkış meselesidir


Aklınızda tutun: sayfalar sık ​​okunduğunda, bir veritabanında saklanan dosya için çok hızlıdır. Yük gelecekte bir anda bir sorun olmalı varsa da önbelleğe alma mekanizmaları içine bir göz atmalısınız


Edit: söylemeyi unutmuşum: # çalışma almak için, aşağıdaki boyunca bir satır eklemek gerekir:

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

regex tekrar çalışma almak için.

Evet.

Sen kullanarak sıralamak için ne belirlemek için bu değişken erişebilirsiniz

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

Bu işe gerektiği gibi bir şey

Sadece dosyasında birkaç adlara sahip olmadıkça o deli olurdu.

Eğer have to be korkunç dinamik, merkezi dosyasında her saat / gün vs 26 metin dosyaları önbelleğe Cron söylemek sürece

a.htm vb

Bir gün beni bir kere yapar, ben bu onların site nasıl davranacakları olduğunu anlamak için benim kullanıcıları eğitimli.

(AZ yaklaşık 10 farklı uygulamaları 'içeriği oluşturulur)