C'è un token per le interruzioni di riga di cattura in regex multilinea?
Domanda
Ho eseguito in questo problema più volte prima di quando si cerca di fare un po 'html raschiando con php e le preg * funzioni.
La maggior parte del tempo ho a strutture di cattura del genere:
<!-- comment -->
<tag1>lorem ipsum</tag>
<p>just more text with several html tags in it, sometimes CDATA encapsulated…</p>
<!-- /comment -->
In particolare voglio qualcosa di simile:
/<tag1>(.*?)<\/tag1>\n\n<p>(.*?)<\/p>/mi
ma \ n \ n non sembra che avrebbe funzionato.
C'è un interruttore generale di interruzione di riga?
Soluzione
Penso che si potrebbe sostituire il \n\n
con (\r?\n){2}
questo modo di catturare la coppia CRLF
invece di char LF
.
Altri suggerimenti
Sei sicuro di volere analizzare HTML usando espressioni regolari? HTML non è regolare e ci sono troppi casi d'angolo.
Vorrei studiare una qualche forma di parser HTML (forse questo ?), E quindi identificare il modello che ti interessa tramite la struttura dei dati HTML restituito.
Oppure si potrebbe guardare il rel="nofollow Dom Estensione per php. Ha una funzione di carico html da una stringa o di un file . È quindi possibile utilizzare i metodi php DOM per attraversare il DOM e trovare i dati che interessa.