elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Ayuda con preg_replace() !! (solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con preg_replace() !! (solved)  (Leído 8,994 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Ayuda con preg_replace() !!
« Respuesta #10 en: 14 Enero 2011, 18:05 pm »

El problema aun continua, no logro dar con el clavo para poder usar bien preg_replace() y funcione sustituyendo DATE(FECHA M) por date( "M", $db["FECHA"]).

Saludos !


En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ayuda con preg_replace() !!
« Respuesta #11 en: 14 Enero 2011, 21:15 pm »

no puedes usar preg_replace, simplemente devolverá M y no se ejecuta la función date...

Código
  1. <?php
  2. echo preg_replace('/^DATE\(([^\s]+)\s([^\)]+)\)$/',"date($2);", 'DATE(FECHA M)');
  3. ?>
Salida:
Código:
M

Lo mejor seria ocupar preg_match y funciona...
Código
  1. <?php
  2.  
  3. $string = 'DATE(FECHA M)';
  4. preg_match('/^DATE\(([^\s]+)\s([^\)]+)\)$/', $string, $result);
  5. echo date($result[2], $db[$result[1]]);
  6. ?>

Saludos.


En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Ayuda con preg_replace() !!
« Respuesta #12 en: 4 Febrero 2011, 17:58 pm »

no puedes usar preg_replace, simplemente devolverá M y no se ejecuta la función date...

Código
  1. <?php
  2. echo preg_replace('/^DATE\(([^\s]+)\s([^\)]+)\)$/',"date($2);", 'DATE(FECHA M)');
  3. ?>
Salida:
Código:
M

Lo mejor seria ocupar preg_match y funciona...
Código
  1. <?php
  2.  
  3. $string = 'DATE(FECHA M)';
  4. preg_match('/^DATE\(([^\s]+)\s([^\)]+)\)$/', $string, $result);
  5. echo date($result[2], $db[$result[1]]);
  6. ?>

Saludos.

Retomando esto...

Se podria automatizar el proceso ??... Digo, porque en tu ejemplo en la primer linea esta el $string que contiene el "comando" ( DATE(FECHA M)), en la segunda linea el preg_match que es el que realiza la obtencion de los valores que esta dentro de DATE(). Finalmente en la tercer linea ejecuta la funcion date() con los valores que se guardaron en una variable en array.

Y lo que quisiera es tener una automacion, ya que no siempre sera date podra invocarse otra funcion y el codigo seria mas largo, ta que tendria que hacer algo como if (strstr( $comando, "DATE(" ) ) (comprobar el dato) para asumir si hare date() u otra funcion.

Anteriormente estabamos probando (sin exito porque usabamos preg_replace) con este codigo:

Código
  1. <?php
  2. $box= get_script_clearjump($m[$i]);
  3. $cad_buscar= array(
  4. '/DATE\((.*?) (.*?)\)/is'
  5. );
  6.  
  7. $cad_remplazo= array(
  8. date("'${2}'", $db['${1}'])
  9. );
  10.  
  11. $box= htmlentities($box, ENT_QUOTES);
  12. $box= preg_replace( $cad_buscar, $cad_remplazo, $box );
  13. # $box= preg_match( $cad_buscar, $cad_remplazo, $box );
  14. ?>

Como vez tengo dos arreglos, el de la busqueda ($cad_buscar) y el del resultado ($cad_remplazo), se podria manejar igual con preg_match() ? o existe alguna opcion ?

Saludos !
« Última modificación: 4 Febrero 2011, 18:00 pm por Diabliyo » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ayuda con preg_replace() !!
« Respuesta #13 en: 4 Febrero 2011, 21:11 pm »

Me imagino que quieres tratar de optimizar. Aunque todo se resume en una linea:
Código
  1. preg_match('/^DATE\(([^\s]+)\s([^\)]+)\)$/', $string, $result);

O eso fue lo que entendi...


En el tema de los Array solo se podría implementar un solo arreglo que seria el de la busqueda ($cad_buscar).
Código
  1. <?php
  2.  
  3. $string = 'DATE(FECHA M)';
  4. $cad_buscar = array('/^DATE\(([^\s]+)\s([^\)]+)\)$/');
  5.  
  6. preg_match($cad_buscar[0], $string, $result);
  7. echo date($result[2], $db[$result[1]]);
  8.  
  9. ?>
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Ayuda con preg_replace() !!
« Respuesta #14 en: 4 Febrero 2011, 22:23 pm »

Me imagino que quieres tratar de optimizar. Aunque todo se resume en una linea:
Código
  1. preg_match('/^DATE\(([^\s]+)\s([^\)]+)\)$/', $string, $result);

O eso fue lo que entendi...


En el tema de los Array solo se podría implementar un solo arreglo que seria el de la busqueda ($cad_buscar).
Código
  1. <?php
  2.  
  3. $string = 'DATE(FECHA M)';
  4. $cad_buscar = array('/^DATE\(([^\s]+)\s([^\)]+)\)$/');
  5.  
  6. preg_match($cad_buscar[0], $string, $result);
  7. echo date($result[2], $db[$result[1]]);
  8.  
  9. ?>

Pero el array debe contener un solo valor no ?, si fuese asi, entonces seria mas trabajo, porque ahorita el comando con el que hemos estado lidiando es DATE(FECHA M), pero despues podria ser que el comando fuese: URL(DATO) en donde, lo que se haria es: extraer el Dato, pasarle el htmlentities o el url_encode...

Mi idea anterior (cuando usaba preg_replace()), era la universalidad del codigo, en donde en el arreglo busqeda ponia todas las asignaciones y en el arreglo remplazo lo que queria que se hiciera... Pero claro, necesitamos preg_match() para lograr el objetivo y a como leo en el manual de php, preg_match() en su primer y segundo argumento requieren un string y no un string array.

Que podriamos hacer ?



Ahora DATE(FECHA M) ya se soluciono con tu propuesta, pero quiero que el mismo code pueda funcionar con otros comandos de forma mas simple, sin tener que implementar un if(strstr($dato, "DATE(") ) para cada tipo (DATE(), URL(), etc...)....

El code quedo asi:

Código
  1. <?php
  2. function comando($cmd, $db)
  3. {
  4. $box= get_script_clearjump($cmd); # eliminamos salto de linea '\n'
  5. #$cad_buscar= array(
  6.   # '/DATE\((.*?) (.*?)\)/is'  
  7.   # );
  8. #$cad_remplazo= array(
  9. # date("$y[2]", $db['$y[s1]'])
  10. #        );
  11.  
  12. $box= htmlentities($box, ENT_QUOTES);
  13. $box= preg_match( '/DATE\((.*?) (.*?)\)/is', $box, $y );
  14. # $box= preg_replace( $cad_buscar, $cad_remplazo, $box );
  15. $r= ucfirst( spanish_daymonth( date($y[2], $db[$y[1]]) ) ); # traducimos a castellano la palabra
  16. return $r;
  17. }
  18. ?>
« Última modificación: 4 Febrero 2011, 22:30 pm por Diabliyo » En línea

~ Yoya ~
Wiki

Desconectado Desconectado

Mensajes: 1.125



Ver Perfil
Re: Ayuda con preg_replace() !!
« Respuesta #15 en: 4 Febrero 2011, 22:45 pm »

En ese caso puedes utilizar un for() para aplicarlo en $cad_buscar...
En línea

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Ayuda con preg_replace() !!
« Respuesta #16 en: 4 Febrero 2011, 22:50 pm »

En ese caso puedes utilizar un for() para aplicarlo en $cad_buscar...

muy cierto....

Entonces, damos el tema por cerrado... Gracias por tu tiempo men !

Saludos !
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con preg_replace « 1 2 »
PHP
PhenfiX 14 5,274 Último mensaje 13 Abril 2008, 21:57 pm
por PhenfiX
Ayuda con Preg_Replace
PHP
Ch3ck 3 3,451 Último mensaje 4 Noviembre 2010, 01:10 am
por Shell Root
Es apache, yo o mi proveedor ? (solved) « 1 2 »
PHP
Diabliyo 15 7,036 Último mensaje 3 Febrero 2011, 00:06 am
por Diabliyo
[Pregunta]: preg_replace es equivalente a mb_ereg_replace?
Desarrollo Web
Leguim 1 2,433 Último mensaje 6 Enero 2020, 05:42 am
por AlbertoBSD
Problemas con preg_replace(). Reemplazar palabras completas
Desarrollo Web
OssoH 0 2,149 Último mensaje 18 Octubre 2022, 16:27 pm
por OssoH
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines