Foros del Web » Programando para Internet » PHP »

Ignorar datos con expresiones regulares

Estas en el tema de Ignorar datos con expresiones regulares en el foro de PHP en Foros del Web. Hola amigos, espero que me puedan apoyar a estas incovenicias, bueno estoy desarrollado una aplicaciones, algo como plantillas, como los delimitadores uso los las etiquetas ...
  #1 (permalink)  
Antiguo 29/02/2008, 08:22
Avatar de capa  
Fecha de Ingreso: octubre-2006
Mensajes: 86
Antigüedad: 17 años, 6 meses
Puntos: 1
Pregunta Ignorar datos con expresiones regulares

Hola amigos, espero que me puedan apoyar a estas incovenicias, bueno estoy desarrollado una aplicaciones, algo como plantillas, como los delimitadores uso los las etiquetas de comentario de html <!—(.*?) --> como con inicio y fin, el objetivo es ignorar algunos datos de esta cadena, para lo cual estoy haciendo el uso de las expresiones regulares, solo quiero conservar de la etiquita de los cometario:
Bueno mejor les pongo el code :
pero no me resulve mi problema
Código PHP:
$cadena 'Datos:<br>
<!-- INI Cont -->
Contenido a ignorar
<!-- INI Msg --> <div class="msg2" align="center">mensaje</div><!-- FIN Msg -->
<table width="200" border="1">
  <tr>
    <td>
<!-- INI Titulo --> <strong>Title</strong> <!-- FIN Titulo -->
    <a href="borrar">borrar</a></td>
  </tr>
  <tr>
    <td>
    <!-- INI TSub -->  <div align="center">sub titulo</div>    <!-- FIN TSub -->
    <!-- INI SCon -->  <pre>contenido</pre>    <!-- FIN SCon -->
    </td>
  </tr>
</table> base ignorar
<!-- FIN Cont -->
<!-- INI Fecha --><div align="right">fecha</div><!-- FIN Fecha -->
'
;
$resul preg_replace(
"/\<!--\s+INI\s+Cont\s+-->(.*?)+(<!--\s+INI\s(.*?)\s+-->(.*?)<!--\s+FIN\s(.*?)\s+-->)(.*?)<!--\s+FIN\s+Cont\s-->/sm",
"\\2 \\4  \\6"$cadena); 
El resultado o objetivo es obtener este código:
Código HTML:
Datos:<br>
<!-- INI Cont -->
<!-- INI Msg --> <div class="msg2" align="center">mensaje</div><!-- FIN Msg -->
<!-- INI Titulo --> <strong>Title</strong> <!-- FIN Titulo -->
<!-- INI TSub --> <div align="center">sub titulo</div> <!-- FIN TSub -->
<!-- INI SCon --> <pre>contenido</pre> <!-- FIN SCon -->
<!-- FIN Cont -->
<!-- INI Fecha --><div align="right">fecha</div><!-- FIN Fecha --> 
Bueno aun no revise bien el comportamiento de los patros por grupos, puedo que me falte algunas datos para obtener el code, encontre este link http://www.ignside.net/man/php/regex.php interesante.

Gracias estaré pendiente a sus respuestas
__________________
Destreza..<?phs La felicidad es un trayecto ?>
  #2 (permalink)  
Antiguo 29/02/2008, 08:43
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Re: Ignorar datos con expresiones regulares

Holas capa

Para ignorar subcadenas prueba usando las funciones substr() y str_replace().

Algo que yo he hecho, no para ignorar, sino para reemplazar contenido de una cadena, ha sido recorrer la cadena con un ciclo (caracter por caracter) e ir preguntando con substr() si la subcadena coincidía con un "inicio X": si la subcadena coincidía, hacía un subproceso para obtener el contenido que había entre esa subcadena "inicio de X" y la próxima subcadena "fin de X": como mi rutina era para reemplazar, yo reemplazaba el contenido con lo que yo quería: en tu caso, en vez de reemplazar con otra subcadena, lo reemplazas pero con una cadena vacía... si requieres hacer más verificaciones o validaciones, las agregas en al ir recorriendo la cadena en el ciclo...

Espero que se haya entendido, o te sirva :P Suerte!
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:02.