سؤال

كيف يمكنك اختصار برمجيا XHTML إلى عدد عشوائي من الكلمات دون ترك علامات غير مغلقة أو تالفة؟

أي.

<p>
    Proin tristique dapibus neque. Nam eget purus sit amet leo
    tincidunt accumsan.
</p>
<p>
    Proin semper, orci at mattis blandit, augue justo blandit nulla.
    <span>Quisque ante congue justo</span>, ultrices aliquet, mattis eget,
    hendrerit, <em>justo</em>.
</p>

سيتم اختصارها إلى 25 كلمة كما يلي:

<p>
    Proin tristique dapibus neque. Nam eget purus sit amet leo
    tincidunt accumsan.
</p>
<p>
    Proin semper, orci at mattis blandit, augue justo blandit nulla.
    <span>Quisque ante congue...</span>
</p>
هل كانت مفيدة؟

المحلول

التكرار من خلال شجرة DOM، مع الحفاظ على تحديث متغير عدد الكلمات.عندما يتجاوز عدد الكلمات الحد الأقصى لعدد الكلمات لديك، أدخل "..." وأزل جميع الأشقاء التاليين للعقدة الحالية، ثم أثناء عودتك للأعلى خلال التكرار، قم بإزالة جميع الأشقاء التاليين لكل من أسلافها.

نصائح أخرى

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

أنا أعمل بشكل رئيسي في PHP، وسأستخدم فئة DOMDocument في PHP لمساعدتي في القيام بذلك، تحتاج إلى العثور على شيء من هذا القبيل باللغة التي اخترتها.

لتوضيح الأمور، إليك التسلسل الهرمي لعينتك:

- p
    - Proin tristique dapibus neque. Nam eget purus sit amet leo
      tincidunt accumsan.
- p
    - Proin semper, orci at mattis blandit, augue justo blandit nulla.
    - span
          - Quisque ante congue justo
    - , ultrices aliquet, mattis eget, hendrerit, 
    - em
          - justo
    - .

لقد وصلت إلى الحد الأقصى البالغ 25 كلمة داخل عنصر الامتداد، لذا يمكنك إزالة كل النص المتبقي داخل الامتداد وإضافة علامة الحذف.يمكن تجاهل جميع العناصر الفرعية الأخرى (كل من النص والعلامات)، ويمكن تجاهل جميع العناصر اللاحقة.

يجب أن يترك لك هذا دائمًا ترميزًا صالحًا بقدر ما أستطيع رؤيته، نظرًا لأنك تتعامل معه كتسلسل هرمي وليس مجرد نص عادي، فإن جميع علامات الإغلاق المطلوبة ستظل موجودة.

بالطبع، إذا كان XHTML الذي تتعامل معه غير صالح في البداية، فلا تتوقع أن يكون الناتج صالحًا.

نأسف لمثال التسلسل الهرمي السيئ، لم نتمكن من معرفة كيفية دمج القوائم.

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