Pregunta

Me gustaría atrapar todo " dev " etiquetas y su contenido respectivo, a través de php preg_match_all() pero no puede obtener las anidadas.

data:

<dev>aaa</dev> <dev>bbb</dev> <dev>  ccc <dev>ddd</dev> </dev>

mi expresión hasta ahora:

|<dev>(.*)</dev>|Uis

gracias, por tu ayuda, b.

¿Fue útil?

Solución

Don & # 8217; t usa expresiones regulares para analizar. Utilice un analizador real como DOMDocument o SimpleXML :

$xml = simplexml_load_string('<root>'.$str.'</root>');

Otros consejos

Debe tener un patrón de coincidencia recursivo:

/<dev>(.*|(?R))<\/dev>/i

Eso solo absorberá los elementos anidados, por lo que si desea analizarlos, deberá ejecutar la función nuevamente en $ coincidencias [1]

El * es un operador codicioso, consume tantos caracteres como sea posible. En su lugar, debe usar la versión *? no codiciosa para encontrar las coincidencias más pequeñas posibles. Tal vez las expresiones regulares no son las mejores herramientas para hacer esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top