Pregunta

Tengo un archivo de texto que se lee:

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

Lo que hay que hacer es lo que necesito para crear una lista A-Z ... así:

# 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

y al hacer clic en la carta que se abre una mesa con sólo las palabras que comienzan con A de si hace clic en una y sólo las palabras que comienzan con números si he hecho clic en el signo #.

Yo estaba pensando en usar una expresión regular para lograr esto, pero no quiero crear 27 páginas diferentes. Entonces, ¿hay una manera de llamar la letra al final de la url? como la creación de algo que va a hacer esto

http://mywebsite/directory.php?letter=A
¿Fue útil?

Solución

Un enfoque muy simple:

Leer en el archivo de texto:

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

Entonces, después de desinfectar la entrada ($letter = $_GET['letter']), se puede construir una expresión regular:

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

y filtrar las filas que desea mostrar:

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

a continuación, el resto es simplemente una cuestión de dar salida a agradable HTML (o lo que sea la salida será)


Tenga en cuenta: Cuando se leen con frecuencia las páginas, es mucho más rápido que el archivo se almacena en una base de datos. También debe echar un vistazo a los mecanismos de almacenamiento en caché si la carga debe ser un problema en algún momento en el futuro


Editar: se olvidó de mencionar: Para conseguir el funcionamiento de #, es necesario añadir una línea a lo largo de los siguientes:

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

para obtener la expresión regular a trabajar de nuevo.

Otros consejos

Sí.

Se puede acceder a esa variable para determinar lo que para ordenar utilizando

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

Algo así debería funcionar

Eso sería estar loco a menos que sólo tiene unos pocos nombres en el archivo.

A menos que tiene que ser terriblemente dinámico decir Cron para almacenar en caché 26 archivos de texto desde el archivo central cada hora / día, etc.

a.htm etc.

Una vez al día me hace, me eduqué a mis usuarios a entender que así es como se comportaría su sitio.

(A-Z se crea de contenido de aproximadamente 10 diferentes aplicaciones)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top