Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2014, 03:08
Avatar de Azrael666
Azrael666
 
Fecha de Ingreso: noviembre-2004
Mensajes: 652
Antigüedad: 20 años, 1 mes
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)