Foros del Web » Programando para Internet » PHP »

¿Expresiones Regulares, preg replace y funcion php?

Estas en el tema de ¿Expresiones Regulares, preg replace y funcion php? en el foro de PHP en Foros del Web. De nuevo problemas con lo mismo,.. Estoy haciendo la funcion de bbcode, y estoy añadiendo un modulo para colorear la sintaxis de la etiqueta [code=lenguje][/code] ...
  #1 (permalink)  
Antiguo 14/03/2010, 13:49
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años, 2 meses
Puntos: 3
¿Expresiones Regulares, preg replace y funcion php?

De nuevo problemas con lo mismo,..

Estoy haciendo la funcion de bbcode, y estoy añadiendo un modulo para colorear la sintaxis de la etiqueta [code=lenguje][/code]

Código PHP:
function BBC_Smileys ($string) {
    
$string=nl2br($string);
   
$a = array(
      
"/\[i\](.*?)\[\/i\]/is",
      
"/\[b\](.*?)\[\/b\]/is",
      
"/\[u\](.*?)\[\/u\]/is",
      
"/\[img\](.*?)\[\/img\]/is",
      
"/\[url=(.*?)\](.*?)\[\/url\]/is",
      
"/\[php\](.+)\[\/php\]/is",
      
"/\[ul\](.*?)\[\/ul\]/is",
      
"/\[li\](.*?)\[\/li\]/is",
      
"/\[br]/is",
      
"/\[center\](.*?)\[\/center\]/is",
      
"/\:D/is",
      
"/\:P/is",
      
"/\:wink:/is",
      
"/\:mira/is"
   
);

   
$b = array(
      
"<i>$1</i>",
      
"<strong>$1</strong>",
      
"<u>$1</u>",
      
"<img src=\"$1\" />",
      
"<a href=\"$1\" target=\"_blank\">$2</a>",
      
geshi_highlight("$1""php""geshi/geshi/"),
      
"<ul>$1</ul>",
      
"<li>$1</li>",
      
"<br><br>",
      
"<center>$1</center>",
      
"<img src=\"Smileys/dientes.gif\" />",
      
"<img src=\"Smileys/lengua.gif\" />",
      
"<img src=\"Smileys/wink.gif\" />",
      
"<img src=\"Smileys/ves.gif\" />"
   
);
   

   
$texto preg_replace($a$b$string);
   
   return 
$texto;

El problema es que no se como obtener el contenido de la etiqueta si encesito parcearla con otra funcion :S entonces en ves de colorear la sintaxis termina coloreando $1 en ves de lo que se puso entre etiquetas..

Alguna idea?

Saludos
  #2 (permalink)  
Antiguo 14/03/2010, 14:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: ¿Expresiones Regulares, preg replace y funcion php?

puedes usar el modificador e para evaluar como PHP la expresión de reemplazo, o bien, usar preg_replace_callback()

revisa lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/03/2010, 14:05
Avatar de AnesGy  
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 10 años, 9 meses
Puntos: 19
Respuesta: ¿Expresiones Regulares, preg replace y funcion php?

No se si sabes hacer un intérprete, pero es casi la misma idea (pero, obviamente, muchísimo mas simple). Vas leyendo palabras (o tokens) y dependiendo de si el token es una plabra reservada (for, if, var...) una variable (en PHP, por ejemplo, $algo), un número (192), un delimitador... le das un color u otro.
__________________
Si alguna vez parece que soy grosero, pido perdón, es un intento fallido de ser directo.

AnesGy SD. Name it, Get it
  #4 (permalink)  
Antiguo 14/03/2010, 15:05
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: ¿Expresiones Regulares, preg replace y funcion php?

M.. He estado intentando y buscando informacion, pero no entiendo, como usr el preg_replace_callback()

He hecho esto para probar
Código PHP:
<?
require("./geshi/geshi.php");
function 
php($matches) {
    return 
geshi_highlight("php"$matches[0], "geshi/geshi/"true);
}

function 
BBC_Smileys ($string) {
    
$string=nl2br($string);
 

   
$texto preg_replace_callback("/\[code\](.+)\[\/code\]/is""php"$string);

   
   return 
$texto;
}
?>
Devuelve "php" en ves del codigo, ni siquiera si reemplazo

Código PHP:
return geshi_highlight("php"$matches[0], "geshi/geshi/"true); 
por

Código PHP:
return $matches[0
Entonces devuelve las mismas etiquetas

Saludos
  #5 (permalink)  
Antiguo 14/03/2010, 15:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 11 años, 10 meses
Puntos: 2534
Respuesta: ¿Expresiones Regulares, preg replace y funcion php?

no será que estas usando mal los argumentos de geshi_highlight() ??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 14/03/2010, 15:17
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: ¿Expresiones Regulares, preg replace y funcion php?

Ahh, como no me di cuenta, muchas gracias amigo!, estaba usando mal los argumentos era el $string antes de $lenguaje,..

Ahora me surge otro problema,..

La funcion devuelve el texto..

[ code]<? echo "hola"; ?>[ /code] (sin espacios)

Donde <? ...... ?> esta coloreado,.. mas muestra el bbcode,.. por que sera esto?,.. sera algun problema de la expresion regular en si?

EDIT: solucionado con $matches[1];

Muchas gracias pateketrueke!! :D

Saludos

Última edición por Carlmycol; 14/03/2010 a las 15:33

Etiquetas: expresiones, funcion, preg, regulares, replace
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 23:11.