Foros del Web » Programando para Internet » PHP »

preg_replace con Patron de Expresiones Regulares

Estas en el tema de preg_replace con Patron de Expresiones Regulares en el foro de PHP en Foros del Web. Hola Amigos de FW. Tengo un problema con un Patron de Expresiones Regulares, y no consigo solventarlo. Resulta que en mi pagina Web, voy a ...
  #1 (permalink)  
Antiguo 15/04/2010, 11:41
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Información preg_replace con Patron de Expresiones Regulares

Hola Amigos de FW. Tengo un problema con un Patron de Expresiones Regulares, y no consigo solventarlo. Resulta que en mi pagina Web, voy a publicar tutoriales de PHP, HTML, Javascript, ActionScript... Y deseo transformar el codigo para mostrarlo; para esto pense en utilizar la funcion preg_replace(); de manera que segun los patrones del codigo, lo reemplacé correctamente, pero simplemente no me aplica, voy a poner un ejemplo de como una de las tantas formas que he intentado, sin tener éxito.


Código PHP:
<?php

$codigo 
"Aca escribo el texto del tutorial. [codigo]<?php echo "Aca escribo el Codigo PHP"; ?>[/codigo]";
$buscar = array( "/[codigo](.+)[\/codigo]/");
$poner = array( cambiar_formato($1););
$codigo preg_replace($quitar$poner$codigo);
echo 
$codigo;
?>
Espero me ayuden con este problema porque ya lo he intentado de muchas formas y no consigo éxito o.O. Gracias! xD
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #2 (permalink)  
Antiguo 15/04/2010, 13:08
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: preg_replace con Patron de Expresiones Regulares

¿Has probado la función highlight_string? Seguro podría solventar tu problema.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 15/04/2010, 13:09
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: preg_replace con Patron de Expresiones Regulares

-Que es lo que no funciona en si?
-Donde defines cambiar_formato() y que hace?
-Donde defines $1?
-Donde defines $quitar?
  #4 (permalink)  
Antiguo 15/04/2010, 14:45
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: preg_replace con Patron de Expresiones Regulares

Ya lo ubique de una mejor forma. Spider, no utilizo esa, porque quiero adaptar mi Sistema con la Librería GeSHi. Ahora el problema que tengo es que no envía la variable del patrón.

Código PHP:
<?php 
class prueba {
    
        function 
codigo($source,$lenguaje) {
        
            
$codigo = new GeSHi($source$lenguaje);
         return 
$codigo->parse_code();
        
        }
    
    }
    
$prueba = new prueba;

$codigo "Comenzando el tutorial <br> <PHP> <?php echo 'Hola Mundo'; ?> </PHP> <br> terminando el tutorial";
$codigo preg_replace("/<PHP>(.+)<\/PHP>/"$prueba->codigo("$1",'php') , $codigo);
echo 
$codigo;
?>
Había Probado con preg_replace_callback(), pero lo vi muy engorroso, y preferí crear una clase sencilla para llamarla pasando la variable.. pero hasta donde se, con pasar $1, que corresponde al código extraído del patrón debería ser... y no, solo manda $1 como un String, y no como la variable resultante..
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #5 (permalink)  
Antiguo 15/04/2010, 14:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: preg_replace con Patron de Expresiones Regulares

De hecho tienes que usar preg_replace_callback para que tu código se evalue y se ejecute, si no la función se ejecuta al llamar a la función y no al procesar los datos que es lo que tu buscas.

Saludos.
  #6 (permalink)  
Antiguo 15/04/2010, 15:05
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: preg_replace con Patron de Expresiones Regulares

Gracias GatorV, podrías darme un ejemplo para ver si entiendo mejor, porque así como lo tengo, el único detalle es que no he podido pasar la variable a la instancia de la clase en $prueba->codigo("$1"), si coloco solo "$1" trabaja, pero si invoco la instancia pasándolo como parámetro, se envía como un String y no como la variable del patrón.
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza
  #7 (permalink)  
Antiguo 15/04/2010, 15:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: preg_replace con Patron de Expresiones Regulares

Lee en el manual como funciona el tipo callback, puedes hacerlo de dos formas, via instancia:
Código PHP:
Ver original
  1. class foo {
  2.         public function doSomething($val) {
  3.                  return ucfirst($val[0]);
  4.        }
  5. }
  6.  
  7. $foo = new foo();
  8. $text = preg_replace_callback($pattern, array($foo, 'doSomething'), $text);

o via estatica:
Código PHP:
Ver original
  1. class foo {
  2.         public static function doSomething($val)
  3.         {
  4.                  retun strtolower($val[0]);
  5.         }
  6. }
  7.  
  8. $text = preg_replace_callback($pattern, array('foo', 'doSomething'), $text);

Saludos.
  #8 (permalink)  
Antiguo 15/04/2010, 18:19
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: preg_replace con Patron de Expresiones Regulares

Para que te orientes sobre los callback lee esto http://php.net/manual/en/language.ps...types.callback. Y via estatica también lo puedes hacer
Código PHP:
Ver original
  1. class foo {
  2.         public static function doSomething($val)
  3.         {
  4.                  retun strtolower($val[0]);
  5.         }
  6. }
  7.  
  8. $text = preg_replace_callback($pattern, 'foo::doSomething', $text);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 16/04/2010, 10:06
Avatar de JoseAlejandro_Realza  
Fecha de Ingreso: agosto-2008
Ubicación: Maracay - Venezuela
Mensajes: 192
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: preg_replace con Patron de Expresiones Regulares

Muchas Gracias GatorV, y a ti Abi, pude resolver fácilmente con el primer ejemplo, aunque investigue sobre los 3.

Ahora tengo una duda, pero es sobre la librería GeSHi. Cuando mando a convertir código PHP, lo hace bien, pero si la mando a convertir AS3, me lo muestra igual... porque sera? Y otra cosa, como hago para que cuando inserte "X" código, las "" y '' no me generen error de syntax?
__________________
Tu Guía Empresarial http://www.empresarial.org.ve Soluciones Empresariales

Atte: José Alejandro Realza

Etiquetas: expresiones, patron, preg_replace, regulares
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 04:30.