prima di iniziare il collegamento a RegEx match open tags except XHTML self-contained tags leggere tutta la domanda.Come creare un parser HTML?
Mi piacerebbe scrivere un parser HTML (solo per HTML 5, dovrebbe controllare se è HTML 5 e se no, restituire un errore) solo per imparare qualcosa di nuovo, ma non so cosa sia il modo migliore per farlo. Lasciate che vi mostri un esempio:
<!doctype html>
<html>
<head>
<!-- #TITLE -->
<title>Just an example</title>
</head>
<body>
<p class='main'>Simple paragraph with an <a href='/a.html'>anchor</a></p>
</body>
</html>
Ora, Qualcuno mi potrebbe mostrare come analizzare questo (forma finale non importa, solo un concetto)? Ho avuto alcune idee (come l'uso di funzioni ricorsive, o fare riferimenti ad array che contengono tag reali), ma non penso che questi fossero i migliori concetti. Devo controllare char by char e quindi chiamare funzioni specifiche o usare espressioni regolari (spiegato sotto)?
Utilizzando le espressioni regolari, non intendo un modello per l'intero tag. Piuttosto intendo usare un pattern per il tagname (e se questo restituisce true, controlla i pattern successivi), quindi per l'attributo (e se questo restituisce true, controlla di nuovo), e infine controlla la fine del tag.
Cosa devo fare quando trovo il tag? Esegui un ciclo che controlla i tag (e se trova il tag, chiamalo ancora e ancora ...)? Ma per me sembra come funzione ricorsiva o almeno a metà ricorsivo quando la funzione X chiama Y che chiama X ...
Quindi la domanda finale è: qual è la struttura più efficiente e corretta per questo?
Non credo che la tua risposta mi aiuti ...Ho visto quella domanda prima e ho scritto nella mia domanda "** Usando le espressioni regolari non intendo un modello per l'intero tag. **" E a proposito, come hai letto questo in meno di 2 minuti? – user1951214