Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Funcion dentro de preg_replace (http://www.forosdelweb.com/f18/funcion-dentro-preg_replace-646287/)

Alejo18 20/11/2008 12:03

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.

GatorV 20/11/2008 12:13

Respuesta: Funcion dentro de preg_replace
 
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Saludos :adios:

Alejo18 20/11/2008 13:20

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

GatorV 20/11/2008 13:39

Respuesta: Funcion dentro de preg_replace
 
Ve el aporte necesitas pasar el parámetro "e" para evaluar la función.

Saludos :adios:

Alejo18 20/11/2008 15:16

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); 


pateketrueke 20/11/2008 15:22

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!!

:patada:

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); 

:borracho:

y ahora?

Alejo18 20/11/2008 15:37

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); 


Alejo18 20/11/2008 15:54

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;



pateketrueke 20/11/2008 15:58

Respuesta: Funcion dentro de preg_replace
 
Código PHP:

$text preg_replace_callback("/==([^=]+)==/"'laFuncion'$text); 

y, ahora... ¿cual es el problema??

Alejo18 20/11/2008 16:10

Respuesta: Funcion dentro de preg_replace
 
Solo agrego 'laFuncion' ?
Tira un array =S

pateketrueke 20/11/2008 16:31

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;



Alejo18 20/11/2008 16:50

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!

oso96_2000 20/11/2008 17:01

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. }

Alejo18 20/11/2008 17:23

Respuesta: Funcion dentro de preg_replace
 
Cita:

Iniciado por oso96_2000 (Mensaje 2672267)
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.


La zona horaria es GMT -6. Ahora son las 23:02.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.