2011-02-17 16 views
10

जैसे <section> का उपयोग करते समय DOMDocument लोड HTML एक त्रुटि देता है। क्या मैं इसके बारे में कुछ कर सकता हूं?PHP: एचटीएमएल 5 टैग

+0

[एचटीएमएल 5-टैग पर PHP डॉमडॉक्यूमेंट त्रुटियों/चेतावनियों का संभावित डुप्लिकेट] (http://stackoverflow.com/questions/6090667/php-domdocument-errors-warnings-on-html5-tags) – cweiske

उत्तर

2

मैंने इस समस्या को PHP के डोमडोक और एक्सएसएल कार्यों के साथ चलाया है। आपको मूल रूप से दस्तावेज़ को XML के रूप में लोड करना होगा। काम करने के लिए मुझे <video> टैग मिला एकमात्र तरीका है।

अद्यतन: तुम भी तत्व के रूप में लंबे समय के रूप में $doc->resolveExternals = true<!DOCTYPE html5 > को & संस्थाओं जोड़ सकते हैं।

+0

लेकिन फिर मुझे केवल अच्छी तरह से गठित एक्सएमएल का उपयोग करें। :/ – Hamster

+0

एचटीएमएल 5 अच्छी तरह से गठित किया जाना चाहिए: पी आप $ doc-> resolExternals = true का प्रयास कर सकते हैं; और उसके बाद ]> में आवश्यक HTML5 टैग डालें, डोमडोक दस्तावेज़-प्रकार –

+2

का पालन करेगा @ जेम्स HTML5 को अच्छी तरह से XML बनाने की आवश्यकता नहीं है। आप अभी भी '/>' के बिना स्वयं बंद टैग का उपयोग कर सकते हैं, उदाहरण के लिए '' – Phil

1

मैं नहीं जानता कि यदि आप की कोशिश की है पुस्तकालय अंततः को यह जवाब में कहा: (यह <aside> और <nav> था

DOM parser that allows HTML5-style </ in <script> tag

Html5lib एक ही मुद्दा तुम मेरे लिए अनुभव कर रहे हैं हल मेरे मुद्दों को ट्रिगर करने वाले टैग)

मैं इसका उपयोग HTML टुकड़ों को पार्स करने के लिए कर रहा था, और लाभ यह है कि यह DOMDocument के लिए एक ड्रॉप-इन प्रतिस्थापन था, क्योंकि वर्तमान में यह आउटपुट ऑब्जेक्ट के रूप में DOMDocument का उपयोग करता है, इसलिए कोई अन्य कार्यक्षमता टूट नहीं गई थी मेरा कार्यान्वयन

दस्तावेज में एक नोट है कि वे भविष्य में DOMDocument से दूर जाने की तलाश में हैं। PHP के लिए

html5lib यहां पाया जा सकता: http://code.google.com/p/html5lib/downloads/detail?name=html5lib-php-0.1.tar.gz&can=2&q=

answer linked to above में, वहाँ के उपयोग पर अधिक जानकारी के कर रहे हैं। जो टेम्पलेट्स के रूप में कार्य करता है कई फ़ाइलों में, मैं कई "विजेट" है

मेरी मामलों में:

1

त्रुटि को अनदेखा करने की कोशिश करो। उदाहरण के लिए: template_header.html template_footer.html

<?php 
//Load header 
$dom = new DOMDocument(); 
@$dom->loadHTMLFile('template_header.html'); 
$xpath = new DOMXpath($dom); 
$nodelist = $xpath->query('div[class="template-widget"]'); 
foreach($nodelist as $node){ 
    echo $dom->saveHTML($node); 
} 
?> 

नोट $ Dom-> loadhtmlfile है और जो '@' त्रुटि ognore करने के लिए।

संबंधित मुद्दे