¿Hay una ficha para capturar los saltos de línea en expresiones regulares de varias líneas?
Pregunta
Me he encontrado con este problema varias veces antes cuando se trata de hacer un poco de html raspando con php y los preg * funciones.
La mayoría de las veces que he de estructuras de captura por el estilo:
<!-- comment -->
<tag1>lorem ipsum</tag>
<p>just more text with several html tags in it, sometimes CDATA encapsulated…</p>
<!-- /comment -->
En particular, quiero algo como esto:
/<tag1>(.*?)<\/tag1>\n\n<p>(.*?)<\/p>/mi
pero el \ n \ n no se ve como que iba a funcionar.
¿Hay un interruptor general de salto de línea?
Solución
Creo que se podría reemplazar el \n\n
con (\r?\n){2}
esta manera se captura el par CRLF
lugar de sólo el carbón LF
.
Otros consejos
¿Está seguro que desea analizar HTML usando expresiones regulares? HTML no es regular y hay demasiados casos de esquina.
Me investigar algún tipo de analizador de HTML (quizás éste ?), Y luego identificar el patrón que le interesa a través de la estructura de datos HTML devuelto.
O usted podría mirar a la rel="nofollow Dom Extensión para php. Tiene una función para de una cadena o una archivo. A continuación, puede utilizar los métodos php DOM para recorrer el DOM y encontrar los datos que le interesan.