PHP: قص مقتطفاتك من الكلمة باستخدام strrpos

كود أتش تي أم أل

إذا كنت تعمل باستخدام PHP وتريد فقط عرض مقتطف من نص المصدر الخاص بك وتقطيعه بعدد من الأحرف ، يمكن أن يبدو مقتطفك قبيحًا إذا تم إجراؤه في منتصف السلسلة. اضطررت إلى كتابة دالة للقيام بذلك في ASP وفي ASP.NET والتي تم تدويرها بشكل أساسي من الحرف الأخير مرة أخرى للعثور على المساحة الأخيرة وقطعها هناك. نوع من البذاءة وقليل من المبالغة. يمكنك أن ترى هذا في الواقع عمليًا في منزلي صفحة حيث أقدم فقط أول 500 حرف.

كنت مستعدًا تمامًا لتطوير نفس الوظيفة باستخدام PHP اليوم ولكن وجدت (كالعادة) أن PHP لديها وظيفة تقوم بها بالفعل ، ستربوس.

سيأخذ الكود القديم سلسلة فرعية (محتوى $) من الحرف الأول إلى الحد الأقصى لعدد الأحرف التي تريدها (maxchars $):

المحتوى $ = substr ($ content، 0، $ maxchars $) ؛ صدى المحتوى $؛

الكود الجديد:

المحتوى $ = substr ($ content، 0، $ maxchars $) ؛ $ pos = strrpos ($ content، "")؛ if ($ pos> 0) {$ content = substr ($ content، 0، $ pos) ؛ } صدى المحتوى $؛

لذا فإن الكود الجديد يقطع المحتوى أولاً عند الحد الأقصى لعدد الأحرف الذي تبحث عنه. ومع ذلك ، فإن الخطوة التالية هي البحث عن آخر مسافة ("") في المحتوى. سوف ينتهي الأمر بـ $ pos ليكون هذا المنصب. الآن ، أنا ببساطة أتأكد من وجود مساحة فعلية في المحتوى عن طريق السؤال عما إذا كان $ pos> 0. إذا لم يكن هناك ، فسيؤدي ذلك إلى قطع المحتوى عند عدد الأحرف التي طلبتها. إذا كان هناك أي مساحة ، فسيتم قطع المحتوى الخاص بي برشاقة في المساحة.

هذه طريقة رائعة لاستخدام مجموعة أكبر عدد من الأحرف وقطعها عند الكلمة. ارجو ان يعجبك!

وأنا متأكد من أنني سأكتشف ما إذا كانت هناك دالة ASP.NET تقوم بهذا ... لم أتمكن من العثور على واحدة.

7 تعليقات

  1. 1
  2. 2
  3. 3
  4. 4

    إذا كان $ content في البداية SHORTER من $ maxchars ، فسيظل الرمز كما هو مكتوبًا من اليمين إلى اليسار لمسافة ويقطع الكلمة الأخيرة. يمكنك إما تسلسل مسافة في نهاية $ content ، أو تنفيذ if (strlen () ...)

  5. 5

    يبدو أن هذا يعمل كوظيفة (معالجة التعليق السابق):

    دالة showexcerpt ($ content، $ maxchars) {

    إذا (strlen ($ content)> $ maxchars) {

    المحتوى $ = substr ($ content، 0، $ maxchars $) ؛
    $ pos = strrpos ($ content، "")؛

    إذا (نقاط البيع> 0) {
    المحتوى $ = substr ($ content، 0، $ pos) ؛
    }

    إرجاع محتوى $. "..." ؛

    {} آخر

    إرجاع محتوى $ ؛

    }

    }

  6. 6

    ماذا لو كان حرفنا الأخير عبارة عن علامة ترقيم مثل علامة توقف أو علامة تعجب أو علامة استفهام؟ لسوء الحظ ، سيمسح هذا الرمز الكلمة بأكملها التي تسبق حرف الترقيم المذكور.  

    أعتقد أنه سيكون من الأفضل كتابة شيء أكثر قوة.

  7. 7

ما رأيك؟

يستخدم هذا الموقع نظام Akismet لتقليل الرسائل الضارة. تعرف كيف تتم معالجة بيانات تعليقك.