Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: lawry 28. 04. 2011, 17:02:57

Název: Parsování HTML pomocí regexp
Přispěvatel: lawry 28. 04. 2011, 17:02:57
Parsujem HTML a potreboval by som ziskat obsah elementu identifikovaneho pomocou id/class pomocou regex/everything v PHP. Problem je najst spravny uzatvaraci tag, pretoze tag obsahuje dalsie rovnakeho typu.
Název: Re: REGEX HTML CLOSING TAG
Přispěvatel: Sten 28. 04. 2011, 17:13:28
Proboha, proč parsujete HTML pomocí regulárních výrazů? Od toho jsou přeci DOM a SAX parsery.
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: Petr Mejzlík 28. 04. 2011, 18:55:21
HTML se obecně nedá parsovat regulárními výrazy. To je vědecky dokázaný fakt.

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: rooobertek 28. 04. 2011, 20:17:47
použil by som xpath v simplexml alebo domdocument.
http://drewish.com/content/2007/08/using_simplexml_with_html

Ak je html nevalidne, patrilo by sa ho vyčistiť ho http://php.net/manual/en/book.tidy.php
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: lawry 28. 04. 2011, 20:50:33
pouzivam http://simplehtmldom.sourceforge.net/ len ked mi pride vacsia stranka s vacsim poctom elementov tak pri spracovani mi dojde ram, preto hladam lepsi spravnejsi sposob
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: Honza DVB 28. 04. 2011, 21:35:45
pouzivam http://simplehtmldom.sourceforge.net/ len ked mi pride vacsia stranka s vacsim poctom elementov tak pri spracovani mi dojde ram, preto hladam lepsi spravnejsi sposob
Zkus nějaký SAX parser - http://zdrojak.root.cz/clanky/php-a-xml-sax-cteme-pekne-poporadku/ (http://zdrojak.root.cz/clanky/php-a-xml-sax-cteme-pekne-poporadku/) - "Na rozdíl od rozhraní DOM a SimpleXML se SAX hodí pro čtení i hodně velkých dokumentů XML, protože se dokument nenačítá celý do paměti, ale čte se postupně sekvenčně."
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: dffd 28. 04. 2011, 21:41:04
Ked uz riesime tie XML parsery tak pridam aj ja:

http://vtd-xml.sourceforge.net/

Zastupca ultra rychlych parserov.
Název: Re: Parsování HTML pomocí regexp
Přispěvatel: blizz 29. 04. 2011, 13:18:27
http://archive.msdn.microsoft.com/SgmlReader

Citace
public static class XmlDocumentUtils
{
    public static void LoadHtml(this XmlDocument document, string html)
    {
        var sgmlReader = new Sgml.SgmlReader()
        {
            DocType = "HTML",
            WhitespaceHandling = WhitespaceHandling.All,
            CaseFolding = Sgml.CaseFolding.ToLower,
            InputStream = new StringReader(html)
        };
        document.PreserveWhitespace = true;
        document.XmlResolver = null;
        document.Load(sgmlReader);
    }
}