Ver Mensaje Individual
  #5 (permalink)  
Antiguo 24/12/2008, 05:17
Avatar de Tokkara
Tokkara
 
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
de hecho, me parece que falta un return dentro de la cadena a evaluar... a menos, que la función imprima y no devuelva algún resultado...
El return deberia estar dentro de la funcion. De hecho no es ni como lo tenia yo. Tu forma es mucho mas eficaz pero solo habria que quitar el return.

Código PHP:
$texto preg_replace('/\[-(.*)-\]/eU''function_exists("\\1")? \\1() : "\\1";'$texto); 
En cuanto a la expresion regular '/\[-(.*)-\]/eU' hay que añadir al final el modificador U también para evitar que la regex sea ambiciosa.

Si no usas el modificador U la expresion regular haria lo siguiente:

este e s mi texto [-nombrefun_2-] este este e s mi texto [-nombrefun_2-] este e s

Cogeria todo lo que hay entre medio hasta que se encuentre con la última secuencia de caracteres ( -] ) que coincidan con la expresion.

Si añadimos el modificador U. La expresion no se vuelve ambiciosa. Y coge todos los caracteres hasta que se encuentre con la primera aparicion de secuencia de caracteres (-]). Ejemplo:


este e s mi texto [-nombrefun_2-] este este e s mi texto [-nombrefun_2-] este e s
__________________
Revolucionario controlador de plantillas para php
www.simphple.com