Problema con expresiones regulares PHP
Hola
Resulta que tengo una cadena muy larga y quiero cortar trozos de esa cadena que se encuentran entre etiquetas div. Mi problema viene al usar preg_match_all() que no se como componer la expresión regular y no se de donde sacar los conocimientos para componer la expresión.
$cadena='
<div align="justify"><a href="http://3.bp.blogspot.com/_64AyfJGU5iw/SdOY_Sewj4I/AAAAAAAADgE/CyQKRfnID6g/s1600-h/lamprea.jpg"><img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" height="216" alt=" src="" width="291" border="0" /></a> O pasado dia vintesete de marzo, fixemos o oportuno como foi despedir o mes cunha lampreada, por iso reunimonos Os Lazaroques como corresponde para dar conta dela. Preparouse de duas formas bastante similares pero con distintos matices, a Bordelesa estilo tradiconal, picatostes, arroz e a Bordelesa guisada con arroz xa mezclado que lle aportaba unha lixeireza e suavidade moi grata a lamprea. Eu de todas formas de todas formas a prefiro a forma tradicional. Tabache moi boa, grazas Maria </div>
<div style="CLEAR: both; TEXT-ALIGN: left"><a href="http://picasa.google.com/blogger/" target="ext"><img style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-';
preg_match_all("aqui la expresion de busqeda", $cadena, $coincidencias, PREG_SET_ORDER);
foreach ($coincidencias as $valor){
echo "Coincidencia: " . $valor[0] . "<br>";
}
Quiero que coja lo que hay entre los divs (me da igual que mantenga las propiedades de la apertura del div) pero no se como hacer la expresión. Mis intentos creo que son fallidos puesto que < / son expresiones en php y con el literal solo no llega para que no las use como expresion y si como texto plano.
Partamos de lo simple
"
<div(.*)/div>"
Desde mi logica(si le puede llamar asi) esto significaria lo que haya entre
<div y /div>. A ver si tu me puedes ayudar a sacarla y si se puede aprender un poco sobre como realizarlas.
Me encantaría aprender como hacerlo más que me dijeras la expresión.
Saludos
Resulta que tengo una cadena muy larga y quiero cortar trozos de esa cadena que se encuentran entre etiquetas div. Mi problema viene al usar preg_match_all() que no se como componer la expresión regular y no se de donde sacar los conocimientos para componer la expresión.
$cadena='
<div align="justify"><a href="http://3.bp.blogspot.com/_64AyfJGU5iw/SdOY_Sewj4I/AAAAAAAADgE/CyQKRfnID6g/s1600-h/lamprea.jpg"><img style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" height="216" alt=" src="" width="291" border="0" /></a> O pasado dia vintesete de marzo, fixemos o oportuno como foi despedir o mes cunha lampreada, por iso reunimonos Os Lazaroques como corresponde para dar conta dela. Preparouse de duas formas bastante similares pero con distintos matices, a Bordelesa estilo tradiconal, picatostes, arroz e a Bordelesa guisada con arroz xa mezclado que lle aportaba unha lixeireza e suavidade moi grata a lamprea. Eu de todas formas de todas formas a prefiro a forma tradicional. Tabache moi boa, grazas Maria </div>
<div style="CLEAR: both; TEXT-ALIGN: left"><a href="http://picasa.google.com/blogger/" target="ext"><img style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-';
preg_match_all("aqui la expresion de busqeda", $cadena, $coincidencias, PREG_SET_ORDER);
foreach ($coincidencias as $valor){
echo "Coincidencia: " . $valor[0] . "<br>";
}
Quiero que coja lo que hay entre los divs (me da igual que mantenga las propiedades de la apertura del div) pero no se como hacer la expresión. Mis intentos creo que son fallidos puesto que < / son expresiones en php y con el literal solo no llega para que no las use como expresion y si como texto plano.
Partamos de lo simple
"
<div(.*)/div>"
Desde mi logica(si le puede llamar asi) esto significaria lo que haya entre
<div y /div>. A ver si tu me puedes ayudar a sacarla y si se puede aprender un poco sobre como realizarlas.
Me encantaría aprender como hacerlo más que me dijeras la expresión.
Saludos
1 Respuesta
Respuesta de davidcortesb
1