PHP

2010-08-31 6 views
13

में एक अवैध HTML को पार्स करने का सबसे अच्छा तरीका क्या अमान्य HTML को पार्स करने के लिए कोई बेहतर तरीका है और उस पर टिडी लागू करना?PHP

साइड नोट: कुछ स्थितियां हैं जब आप टिडी उपलब्ध नहीं कर सकते हैं। Regexp भी अनुशंसित नहीं है I HTML को पार्स करने के लिए समझा गया।

+2

ऐसी स्थितियों में जहां आपके पास टिडी उपलब्ध नहीं है, आपको इसे इंस्टॉल करना चाहिए। या आप पहले टूटी हुई HTML का उपयोग नहीं कर सकते हैं। –

+2

क्या आप गंभीर हैं? कम से कम दो बार मैं इस सर्वोत्तम अभ्यास को करने में असमर्थ था: क्लाइंट से अमान्य एचटीएमएल कोड जिसे इसे पार्स करने की आवश्यकता है, टिडी इंस्टॉल करने के लिए कोई विकल्प नहीं साझा किया गया .. – danidacar

+0

@ दानीप: मृत गंभीर। –

उत्तर

6

मैं कुछ इस तरह की कोशिश करेंगे: http://php.net/manual/en/domdocument.loadhtml.php

कि पृष्ठ से:

समारोह एचटीएमएल स्ट्रिंग स्रोत में शामिल पार्स करता है। एक्सएमएल लोड करने के विपरीत, एचटीएमएल लोड करने के लिए अच्छी तरह से गठित नहीं होना चाहिए। यह कार्य एक DOMDocument ऑब्जेक्ट को लोड और बनाने के लिए स्थिर रूप से भी कहा जा सकता है।

+0

यह दो या दो से अधिक तत्वों पर आईडी के लिए समान मान पर लोड HTML ऑब्जेक्ट्स लगता है (हालांकि, यह शायद libxml से आ रहा है) – HorusKol

1

SimpleHTMLDOM PHP के मूल डीओएम कार्यों की तुलना में अधिक उदार होने के लिए जाना जाता है।

+2

[SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) के लिए सुझाए गए तीसरे पक्ष के विकल्प जो वास्तव में [DOM] (http://php.net/manual/en का उपयोग करते हैं) /book.dom.php) स्ट्रिंग पार्सिंग के बजाय: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/ zend.dom.html), [QueryPath] (http://querypath.org/) और [FluentDom] (http://www.fluentdom.org)। – Gordon

+0

@ गॉर्डन इस बार आप बहुत जल्दी थे :) वह टूटी हुई HTML को पार्स करने के लिए देख रहा है। –

+1

जो सभी डीओएम आधारित पार्सर्स [libxml के HTML पार्सर मॉड्यूल] (http://xmlsoft.org/html/libxml-HTMLparser.html) का उपयोग करते समय ठीक से संभालने में सक्षम होना चाहिए। – Gordon

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