Foros del Web » Programación para mayores de 30 ;) » RegExp »

Preg_replace de texto finalizando en cadena

Estas en el tema de Preg_replace de texto finalizando en cadena en el foro de RegExp en Foros del Web. Hola a todos. Llevo casi dos días dándole vueltas a una expresión regular que me está volviendo loco, se supone que tengo que encontrar (eliminar) ...
  #1 (permalink)  
Antiguo 23/01/2014, 03:08
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
Preg_replace de texto finalizando en cadena

Hola a todos.

Llevo casi dos días dándole vueltas a una expresión regular que me está volviendo loco, se supone que tengo que encontrar (eliminar) un texto que se encuentra entre 2 "etiquetas" pero me resulta imposible hacer que se me pare en la última, me selecciona todo el texto.

Por partes:

El texto a buscar es del siguiente estilo:

Código PHP:
codigo php que no quiero tocar
/*etiqueta*/
un chorrazo de código php
con saltos de linea
que
encima es código malicioso
que estoy intentando eliminar de
una web
/*/etiqueta*/
mas código php que no quiero tocar 
El primer problema con el que me encuentro es que "etiqueta" no es un texto fijo, en unas páginas está con /*e2c384*/ y /*/e2c384*/, en otros con /*f4tertsa4*/ y /*/f4tertsa4*/ con lo cual es un poco caótico.

Lo que tengo hasta el momento es lo siguiente:

/*etiqueta*/ lo encuentro con: #[A-Za-z0-9-]*#
/*/etiqueta*/ lo encuentro con: #\/[A-Za-z0-9-]*#

y con #[A-Za-z0-9-]*#[\t\r\n\s](((.*)[\t\r\n\s]*)*) encuentro todo el texto desde /*etiqueta*/ (incluida)

Vamos, que tengo la parte fácil... la cuestión es que me quedo ahí, no soy capaz de hacer que se me pare en /*/etiqueta*/ y me elimina también "más código php que no quiero tocar"

Intento hacerlo de esta forma #[A-Za-z0-9-]*#[\t\r\n\s](((.*)[\t\r\n\s]*)*)#\7[A-Za-z0-9-]*# pero nada, he intentando darle una vuelta y usar assertions pero no controlo mucho de regex...


¿Existe alguna forma de hacerlo o es un imposible?

Un saludo (y feliz año, aunque llegue algo tarde XD)
__________________
ALOZORRO v5.0 (ahora en .es)
  #2 (permalink)  
Antiguo 23/01/2014, 03:39
Avatar de Azrael666  
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años
Puntos: 1
Respuesta: Preg_replace de texto finalizando en cadena

Bueno.. después de media hora de mas vueltas lo he conseguido.

Dejo el código por si a alguien le interesa:

/(?m)\*[A-Za-z0-9-]*\*((.*)[\t\r\n\s]*)*?\/\*\/([A-Za-z0-9-]+)\*\//im


Una duda que me surge ahora sería, se podría detectar que la segunda es igual que la primera?


Un saludo.
__________________
ALOZORRO v5.0 (ahora en .es)

Etiquetas: cadena
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 12:36.