Foros del Web » Programando para Internet » PHP »

problemas con BBCODE y FUNCION

Estas en el tema de problemas con BBCODE y FUNCION en el foro de PHP en Foros del Web. hola amigos, desde un formulario envio al siguiente scripts procesar.php un textarea que contiene direcciones de correo, direcciones de mail y emoticones, pero resulta que ...
  #1 (permalink)  
Antiguo 16/09/2004, 18:15
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 2 meses
Puntos: 2
problemas con BBCODE y FUNCION

hola amigos, desde un formulario envio al siguiente scripts procesar.php un textarea que contiene direcciones de correo, direcciones de mail y emoticones, pero resulta que cuando quiero implementar la funcion que me convierte las direcciones de correo y url osea y el scripts NO me guarda nada en el campo de la base de datos

aqui coloco el scripts procesar.php completo:
Código PHP:
<?php

include("conexion.php");
include(
"fecha.php");
// / FUNCION QUE BUSCA DIRECCIONES WEBS DE CORREO ELECTRONICO
$mensaje=$_POST['mensaje'];
function 
parsearurl()
{
    
$urlBuscarArray = array("/([^]_a-z0-9-=\"'/])((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si",
        
"/^((https?|ftp|gopher|news|telnet)://|www.)([^ \r\n()^\$!`\"'|[]{}<>]*)/si"
        
);

    
$urlRemplazarArray = array("\1[url]\2\4[/url]",
        
"[url]\1\3[/url]"
        
);

    
$emailBuscarArray = array("/([ \n\r\t])([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si",
        
"/^([_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(.[a-zA-Z0-9-]+)*(.[a-zA-Z]{2,4}))/si"
        
);

    
$emailRemplazarArray = array("\1[mail]\2[/mail]",
        
"[mail]\0[/mail]"
        
);

    
$texto preg_replace($urlBuscarArray$urlRemplazarArray$mensaje);
    if (
strpos($texto"@")) {
        
$texto preg_replace($emailBuscarArray$emailRemplazarArray$texto);
    } 
    return 
$texto;

$mensaje parsearurl($mensaje);

// QUITAMOS CARACTERES INVALIDOS
$mensaje str_replace("<""&lt;"$mensaje);
$mensaje str_replace(">""&gt;"$mensaje);
$mensaje str_replace('\"'"&quot;"$mensaje);
$mensaje str_replace("'""'"$mensaje); 
// PONEMOS LOS SMILIES AL MENSAJE
$mensaje str_replace("[Ah sí]""<img src=\"smiley/ahsi.png\">"$mensaje);
$mensaje str_replace("[Alegre]""<img src=\"smiley/Alegre.png\">"$mensaje);
$mensaje str_replace("[Arrogante]""<img src=\"smiley/Arrogante.png\">"$mensaje);
$mensaje str_replace("[b]""<strong>"$mensaje); //modifica kitando el espacio,, x k si no los reproduce en los foros ;)
$mensaje str_replace("[/b]""</strong>"$mensaje);
$mensaje str_replace("[i]""<i>"$mensaje);
$mensaje str_replace("[/i]""</i>"$mensaje);
$mensaje str_replace("[u]""<u>"$mensaje);
$mensaje str_replace("[/u]""</u>"$mensaje);
$mensaje nl2br($mensaje);

$mensaje str_replace("[citar]""<table width=80% bgcolor=black align=center cellspacing=1 cellpadding=2><tr><td bgcolor=#eeeeee><font face=tahoma size=1><b>Citando:</b><br>"$mensaje);
$mensaje str_replace("[/citar]""</td></tr></table>"$mensaje);
$leido "0";
mysql_query("INSERT INTO mensajes (de,para,asunto,mensaje,fecha,leido) VALUES 
 ('$de','$para','$asunto','$mensaje','$fecha2','$leido')"
);
mysql_free_result();
mysql_close();
header("location: bandeja_mensajes.php");
exit;
?>
Desde ya muchas Gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -

Última edición por fmmeson; 16/09/2004 a las 18:17
  #2 (permalink)  
Antiguo 16/09/2004, 21:05
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 4 meses
Puntos: 5
Puede ser porque hayas puesto sólo un slashback para la representación de las subcadenas en la expresión regular?
Código PHP:
   $urlRemplazarArray = array("\1[url]\2\4[/url]"
        
"[url]\1\3[/url]" 
        
); 
    
$emailRemplazarArray = array("\1[mail]\2[/mail]"
        
"[mail]\0[/mail]" 
        
); 
No entiendo mucho de expresiones regulares y lo mismo estoy diciendo una tontería pero creo que para posicionar subcadenas hay que anteponer al numerito un doble slashback...

Código PHP:
    $urlRemplazarArray = array("\\1[url]\\2\\4[/url]"
        
"[url]\\1\\3[/url]" 
        
); 
    
$emailRemplazarArray = array("\\1[mail]\\2[/mail]"
        
"[mail]\\0[/mail]" 
        
); 
Por lo demás no sé, a ver si tenemos suerte y es eso, sino ya no sé.
Yo tengo una especie de parseador de bbcode para que convierta urls y mails en su correspondiente HTML pero le puse unos códigos que usan los foros phpbb (en la función includes/bbcode.php por si lo quieres hojear) que simplemente sustituyen el mail por un <a href="mailto:...etc:
Código PHP:
    $campo preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is""\\1<a href=\"\\2\" target=\"_blank\">\\2</a>"$campo);
    
$campo preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r<]*)#is""\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>"$campo);
    
$campo preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i""\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>"$campo); 
En fin saludos lamento no poder ayudarte más.
__________________
[+]
[+]

Última edición por yoseman; 16/09/2004 a las 21:10
  #3 (permalink)  
Antiguo 18/09/2004, 02:34
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 2 meses
Puntos: 2
gracias yoseman por tu ayuda pero no me ayudo tu consejo.......trate de solucionar desglosando y solo utilizando la funcion y me arroja el siguiente error:
Cita:
Warning: Unknown modifier ']' in c:\servidor\www\tucu\prueba1.php on line 21

Warning: Unknown modifier '/' in c:\servidor\www\tucu\prueba1.php on line 21
la Linea 21 es la siguiente
Cita:
if (strpos($texto, "@")) {
si alguien sabe algo, se lo agradeceria mucho
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #4 (permalink)  
Antiguo 19/09/2004, 16:51
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 2 meses
Puntos: 2
alguna idea ?
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
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 14:42.