Foros del Web » Programando para Internet » PHP »

Funcion dentro de preg_replace

Estas en el tema de Funcion dentro de preg_replace en el foro de PHP en Foros del Web. Código PHP: function  funcionUper ( $text ){ $text  =  strtoupper ( $text ); return  $text ; } /////// function  bbCode ( $texto ){ // Funciona  $texto  ...
  #1 (permalink)  
Antiguo 20/11/2008, 12:03
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Funcion dentro de preg_replace

Código PHP:
function funcionUper($text){
$text strtoupper($text);
return 
$text;
}
///////
function bbCode($texto){
// Funciona 
$texto preg_replace("/\\[b\\](.+?)\[\/b\]/is",'<b>\1</b>'$text);
// y Eso es lo que no funciona, es decir no toma a funcionUper como una función
$texto preg_replace("/\\[CLAVE\\](.+?)\[\/CLAVE\]/is",funcionUper('\1'), $text);

return 
$texto;

Abrá una forma de hacer funcionar funcionUpder dentro del preg_replace?, alguna idea? e probado con otros métodos pero siempre tienen su contra, como por ejemplo.
Código PHP:
//...
            
$clave preg_match("/\\[CLAVE\\](.+?)\[\/CLAVE\]"$text);

            if(
$clave ){
            
$nuevo preg_replace("/\(\((.+?)\)\)/is",'\1'$text);
            
$texto funcionUper($nuevo);
            } 
return 
$texto
Pero cuando hago eso si encuentra algo con [clave], la funcion coge a todo el texto =S.
La idea es reemplazar todos los textos que contengan [CLAVE]unaclave[/CLAVE] por la clave en mayúsculas.

Última edición por Alejo18; 20/11/2008 a las 12:08
  #2 (permalink)  
Antiguo 20/11/2008, 12:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Funcion dentro de preg_replace

http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Saludos
  #3 (permalink)  
Antiguo 20/11/2008, 13:20
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

No se tío pero las expresiones ya me las se o mejor dicho se cómo aplicarlas. pero cuando hago esto:
$texto = preg_replace("/\\[CLAVE\\](.+?)\[\/CLAVE\]/is",funcionUper('\1'), $text);
la funcion funcionUper no me funciona (valga la redundancia)
Gracias igual
  #4 (permalink)  
Antiguo 20/11/2008, 13:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Funcion dentro de preg_replace

Ve el aporte necesitas pasar el parámetro "e" para evaluar la función.

Saludos
  #5 (permalink)  
Antiguo 20/11/2008, 15:16
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

Le agregué la e para que tome el código pero me lanza un caracter raro " " es un cuadrado =S
Código PHP:
$texto preg_replace("/\\[CLAVE\\](.+?)\[\/CLAVE\]/ise",funcionUper('\1'), $text); 
Warning: Unexpected character in input: '' (ASCII=1) state=1 in C:\AppServ\www\bbcode.php(21) : regexp code on line 1

Linea 21:
Código PHP:
 $text preg_replace("/\\[CLAVE\\](.+?)\[\/CLAVE\]/ise",funcionUper("\1"), $text); 

Última edición por Alejo18; 20/11/2008 a las 15:23
  #6 (permalink)  
Antiguo 20/11/2008, 15:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Funcion dentro de preg_replace

amigo, lo que pasa... es que no debes colocar la función como tal, sino en una cadena... para ser evaluada!!



y tu le colocaste la función como tal... ejecutada, demás estas doble-escapando las barras!! (eso también va mal)

pon atención... hasta necesita un return ... ojo!

Código PHP:
$texto preg_replace("/\[CLAVE\](.+?)\[\/CLAVE\]/ise","return funcionUper('\1')"$text); 


y ahora?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/11/2008, 15:37
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

ME sigue apareciando ese signo raro del cuadrado
En realidad no son corchetes con las que se encierra, son "=="
En el post se escribe de esta manera

==clave==

Ahora quiero convertirla en esto:

CLAVE

Si.. con un Link la funcion no solo tiene que pasarlo a mayúsculas si no también un link y reemplazando subguiones.
Ésto es lo que hago: :(
Código PHP:
$text preg_replace("/\=\=(.+?)\=\=/ise","laFuncion('\1')"$text); 
  #8 (permalink)  
Antiguo 20/11/2008, 15:54
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

Edito ésta es la función:
Código PHP:
function laFuncion($n){
$i ucwords($n);
$l str_replace("_","",$i);
$z "<a href=\"Clave_".$l.".html\">".$i."</a>";
return 
$z;

  #9 (permalink)  
Antiguo 20/11/2008, 15:58
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Funcion dentro de preg_replace

Código PHP:
$text preg_replace_callback("/==([^=]+)==/"'laFuncion'$text); 
y, ahora... ¿cual es el problema??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 20/11/2008, 16:10
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

Solo agrego 'laFuncion' ?
Tira un array =S
  #11 (permalink)  
Antiguo 20/11/2008, 16:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Funcion dentro de preg_replace

mmm.... si, es por el callback ¿porque no revisas las funciones del manual??

Código PHP:
function laFuncion($n){
$i ucwords($n[1]); // listo ??
$l str_replace("_","",$i);
$z "<a href=\"Clave_".$l.".html\">".$i."</a>";
return 
$z;

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 20/11/2008, 16:50
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

$i = ucwords($n[1]);

Aleluya, con eso tomará el dato del array no ?

La desventaja es que si no quiero pasar el texto por bbcode, si no la funcion directa echo laFuncion("clave"), ya nmo lo tomará

Pero igual quedo perfecto, Muchas gracias pakete!

Última edición por Alejo18; 20/11/2008 a las 16:56
  #13 (permalink)  
Antiguo 20/11/2008, 17:01
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Respuesta: Funcion dentro de preg_replace

Hay que pensarle un poquito ;)

Código php:
Ver original
  1. function laFuncion($n){
  2. if (is_array($n)) $n = $n[1];
  3. $i = ucwords($n); // listo ??
  4. $l = str_replace("_","",$i);
  5. $z = "<a href=\"Clave_".$l.".html\">".$i."</a>";
  6. return $z;
  7. }
__________________
Sin Ideas
  #14 (permalink)  
Antiguo 20/11/2008, 17:23
 
Fecha de Ingreso: abril-2008
Mensajes: 122
Antigüedad: 16 años
Puntos: 1
Respuesta: Funcion dentro de preg_replace

Cita:
Iniciado por oso96_2000 Ver Mensaje
Hay que pensarle un poquito ;)

Código php:
Ver original
  1. function laFuncion($n){
  2. if (is_array($n)) $n = $n[1];
  3. $i = ucwords($n); // listo ??
  4. $l = str_replace("_","",$i);
  5. $z = "<a href=\"Clave_".$l.".html\">".$i."</a>";
  6. return $z;
  7. }
Lol pero que coincidencia, antes ya lo habia pensado si existe una funcion que comprueba si la cadena es un array, lei php y pues la use, pase por aquí para cerrar el caso y con lo que encuentro xDD. Gracias de todos modos.
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 07:03.