سؤال

وأنا نفذت YUI النص الغني محرر و أود أن تخلص من <html>، <body> والعلامات DOCTYPE بأسرع ما يمكنني حفظ المحتوى من المحرر. وأنا أعلم أنني يمكن أن تفعل هذا بعد ذلك عن طريق تحليل HTML، ولكن يجب أن يكون هناك حل أفضل.

والآن يتم حفظ هذا عندما كنت تحرير النص في المحرر YUI:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <body>
        <p>foo</p>
    </body>
</html>

و... ولكن أود أن مجرد حفظ هذا:

<p>foo</p>

وأي فكرة؟

وPS: I نفذت محرر YUI باستخدام yui_editor المساعد لروبي على القضبان ، ولكن محرر YUI الجواب العامة موضع ترحيب أيضا!

هل كانت مفيدة؟

المحلول

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

value = Nokogiri::HTML(yui_content).css('body').to_html 
value.gsub!(/<body>/,'') 
value.gsub!(/<\/body>/,'')

نصائح أخرى

وحل واحد سيكون هذا، فإنه يستخدم التعابير العادية للقبض على كل شيء بين <body> و</body>. مثال (معدلة من صفحة محرر YUI):

var myEditor = new YAHOO.widget.Editor('msgpost');
myEditor.render();

YAHOO.util.Event.on('somebutton', 'click', function() {
    myEditor.saveHTML();

    //The var html will now have the contents of the textarea
    var html = myEditor.get('element').value, match;

    match = html.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
    html = match ? match[1] : html;
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top