سؤال

لدي ملف نصي يقرأ:

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

ما أحتاج إليه هو أنني بحاجة إلى إنشاء قائمة AZ ... لذلك:

# 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

وعند النقر فوق الرسالة، سيؤدي ذلك إلى طرح طاولة مع الكلمات التي تبدأ فقط مع A's إذا قمت بالنقر فوق "الكلمات" فقط "وهي فقط تبدأ بالأرقام"

كنت أفكر في استخدام تعبير منتظم لإنجاز هذا لكنني لا أريد إنشاء 27 صفحة مختلفة. فهل هناك طريقة لاستدعاء الرسالة في نهاية عنوان URL؟ مثل إنشاء شيء سوف تفعل هذا

http://mywebsite/directory.php?letter=A
هل كانت مفيدة؟

المحلول

نهج بسيط للغاية:

قراءة في الملف النصي:

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

ثم، بعد تعقيم المدخلات ($letter = $_GET['letter'])، يمكنك بناء Regex:

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

وتصفية الصفوف التي تريد إظهارها:

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

الباقي هو ببساطة مسألة إخراج HTML لطيفة (أو أيا كان الناتج)


ضع في اعتبارك: عندما يتم قراءة الصفحات بشكل متكرر، فهي أسرع بكثير لديك الملف المخزن في قاعدة البيانات. يجب عليك أيضا إلقاء نظرة على آليات التخزين المؤقت إذا كان الحمدا يجب أن يكون مشكلة في بعض الوقت في المستقبل


تحرير: نسيت أن أذكر: للحصول على # العمل، تحتاج إلى إضافة خط على طول ما يلي:

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

للحصول على Regex العمل مرة أخرى.

نصائح أخرى

نعم.

يمكنك الوصول إلى هذا المتغير لتحديد ما هو الفرز باستخدام

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

شيء من هذا القبيل يجب أن يعمل

سيكون ذلك مجنونا إلا إذا كان لديك سوى عدد قليل من الأسماء في الملف.

إلا انت يجب ان تكون أخبر ديناميكية ديناميكية بشكل رهيب عن ذاكرة التخزين المؤقت 26 ملفات نصية من ملفك المركزي كل ساعة / يوم وما إلى ذلك

A.MTM الخ

مرة واحدة في اليوم هل لي، أنا تعليم مستخدمي أن أفهم أن هذا هو كيف سيتصرف موقعهم.

(يتم إنشاء AZ من حوالي 10 محتوى مختلف التطبيقات)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top