Foros del Web » Programando para Internet » PHP »

expresion regular encontrar [- -] en cadena

Estas en el tema de expresion regular encontrar [- -] en cadena en el foro de PHP en Foros del Web. Hola, tengo la sigiente cadena : function nombrefun_1(){ return ' texto 1'; } function nombrefun_2(){ return ' texto 2'; } function nombrefun_3(){ return ' texto ...
  #1 (permalink)  
Antiguo 23/12/2008, 16:27
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 19 años, 4 meses
Puntos: 3
expresion regular encontrar [- -] en cadena

Hola, tengo la sigiente cadena :

function nombrefun_1(){
return ' texto 1';
}

function nombrefun_2(){
return ' texto 2';
}

function nombrefun_3(){
return ' texto 3';
}

$cadena = " este e s mi texto este e s mi texto este e s mi texto [-nombrefun_1-] este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto

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

este e s mi texto este e s mi texto este e s mi texto [-nombrefun_3-] este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto este e s mi texto ";




Quisiera crear una exprecion regular que me encontrara todos los datos que esten dentro de [- lo que sea -], y en esa misma pocicion me envocara una funcion. que corresponde al texto.

grax.
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #2 (permalink)  
Antiguo 23/12/2008, 16:37
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: expresion regular encontrar [- -] en cadena

a ver, a ver... prueba esto.

Código PHP:

$regex 
"#\[-(.+)-\]#eU";
$nuevo_texto preg_replace($regex"eval(\"\\1();\")"$texto); 
Usamos la funcion eval() La cual evalua la función del texto. No he probado la función regex pero debería funcionar.
__________________
Revolucionario controlador de plantillas para php
www.simphple.com
  #3 (permalink)  
Antiguo 23/12/2008, 17:46
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 16 años, 4 meses
Puntos: 416
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Quisiera crear una exprecion regular que me encontrara todos los datos que esten dentro de [- lo que sea -], y en esa misma pocicion me envocara una funcion. que corresponde al texto.
http://www.php.net/manual/es/functio...-user-func.php
  #4 (permalink)  
Antiguo 23/12/2008, 18:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Iniciado por Tokkara Ver Mensaje
a ver, a ver... prueba esto.

Código PHP:

$regex 
"#\[-(.+)-\]#eU";
$nuevo_texto preg_replace($regex"eval(\"\\1();\")"$texto); 
Usamos la funcion eval() La cual evalua la función del texto. No he probado la función regex pero debería funcionar.
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...


demás, la expresión adecuada sería esta... ??

Código PHP:
$texto preg_replace('/\[-(.*)-\]/e''return function_exists("\\1")? \\1(): "\\1";'$texto); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/12/2008, 05:17
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 16 años, 5 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
  #6 (permalink)  
Antiguo 24/12/2008, 10:04
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Iniciado por Tokkara Ver Mensaje
este e s mi texto [-nombrefun_2-] este este e s mi texto [-nombrefun_2-] este e s

Definitivamente Perfecto!!!,

Si es como yo deseava dicha exprecion, de por si publico un ejemplo %100 funcionañl.


function hola1(){

return "HOLA 1";
}

function hola2(){

return "HOLA 2";
}

function hola3(){

return "HOLA 3";
}

$cadena = "En Argentina es indispensable que las [-hola1-] Pyme se capaciten y profesionalicen su gestión.Las crisis, pasamos de ciclos de crecimiento [-hola2-] (cuando bajamos al costo de mano de obra) a ciclos de estancamiento[-hola3-] (cuando se recupera ese valor). Estamos continuamente desarrollando empresas para suplantar importaciones y luego cerrándolas cuando los costos se recuperan.";
$texto = preg_replace('/\[-(.*)-\]/eU', 'function_exists("\\1")? \\1() : "\\1";', $cadena);
echo $texto;



Ahora hay forma de que una funcion incluya un archivo y se ejecute dentro de la cadena donde esta la exprecion???


es decir en ver de:

function hola1(){

return "HOLA 1";
}


sea


function hola1(){

include ("hola.php");
}
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #7 (permalink)  
Antiguo 26/12/2008, 09:46
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Iniciado por Tokkara Ver Mensaje
............................................
este e s mi texto [-nombrefun_2-] este este e s mi texto [-nombrefun_2-] este e s
Oye hay formas de que en ves que se cambie por una funcion se cambie por el contenido de un include ???????
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #8 (permalink)  
Antiguo 26/12/2008, 17:39
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: expresion regular encontrar [- -] en cadena

claro que hay formas!!

pero, debes ser creativo... no crees??

una de estas formas, es usar buffers... y listo!
Código PHP:
ob_start();

// ...

$out ob_get_contents();
ob_end_clean();

echo 
$out
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 27/12/2008, 09:12
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 19 años, 4 meses
Puntos: 3
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Iniciado por pateketrueke Ver Mensaje
claro que hay formas!!

pero, debes ser creativo... no crees??

una de estas formas, es usar buffers... y listo!
Código PHP:
ob_start();

// ...

$out ob_get_contents();
ob_end_clean();

echo 
$out

Gracias, claro que yo preferiria ( ya entrandome en el tema) usar file_get_contens que incluye el fichero incluso con sus sentencias php ya ejecutadas...
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #10 (permalink)  
Antiguo 27/12/2008, 11:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: expresion regular encontrar [- -] en cadena

Cita:
Iniciado por nes24 Ver Mensaje
[...] usar file_get_contens que incluye el fichero incluso con sus sentencias php ya ejecutadas [...]
error....

file_get_contents no ejecuta el PHP contenido en el archivo, a menos que lo pases por eval() ....

lo que si lo ejecuta, es include/require .... de veras!!

necesitas abrir un buffer, incluir el script (para que se ejecute) capturar el buffer, limpiarlo... y devolver el resultado, bingo!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
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:56.