Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/06/2006, 08:38
Avatar de -Defero-
-Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 22 años, 3 meses
Puntos: 76
Voy avanzando, basándome en la duda planteada en este tema he encontrado el modo de mantener el BBCODE, aunque aún no es una solución completa, y seguro que fallará en más de una ocasión:

Código PHP:
<ul>
<? 
$directorio 
= "./forum"; //Carpeta donde esta situado el foro. 
include("$directorio/config.php"); 
$conexion = mysql_connect($dbhost,$dbuser,$dbpasswd); 
mysql_select_db($dbname,$conexion); 
$consulta = "select * from ".$table_prefix. "topics WHERE forum_id='16' && topic_id!='648' order by topic_title" ; 
$resultado = mysql_query($consulta); 
$i = 0; 
while (
$rows = mysql_fetch_array($resultado)) { 

$consulta4 = "select * from ".$table_prefix."posts where post_id='$rows[topic_first_post_id]'"; 
$resultado4 = mysql_query($consulta4); 
$datosx = mysql_fetch_array($resultado4); 

$consulta5 = "select * from ".$table_prefix."posts_text where post_id='$rows[topic_first_post_id]'"; 
$resultado5 = mysql_query($consulta5); 
$datosy = mysql_fetch_array($resultado5); 

//// Para reducir la longitud del título
// if (strlen($datost[topic_title]) > $caracteres) { 
// $datost[topic_title] = substr($datost[topic_title],0,20)."..."; 
// } 

$datosy[post_text] = str_replace("[b:".$datosy[bbcode_uid]."]","<b>", $datosy[post_text]);
$datosy[post_text] = str_replace("[/b:".$datosy[bbcode_uid]."]","</b>", $datosy[post_text]);
$datosy[post_text] = str_replace("[i:".$datosy[bbcode_uid]."]","<i>", $datosy[post_text]);
$datosy[post_text] = str_replace("[/i:".$datosy[bbcode_uid]."]","</i>", $datosy[post_text]);
$datosy[post_text] = str_replace("[u:".$datosy[bbcode_uid]."]","<u>", $datosy[post_text]);
$datosy[post_text] = str_replace("[/u:".$datosy[bbcode_uid]."]","</u>", $datosy[post_text]);
$datosy[post_text] = str_replace("[img:".$datosy[bbcode_uid]."]","<img src=", $datosy[post_text]);
$datosy[post_text] = str_replace("[/img:".$datosy[bbcode_uid]."]",">", $datosy[post_text]);
$datosy[post_text] = preg_replace("[\[url=([a-zA-Z0-9\-\_\.\/\:]*)\]]is",'<a href="$1">', $datosy[post_text]);
$datosy[post_text] = str_replace("[/url]","</a>", $datosy[post_text]);

//// Para quitar el bbcode
 
{
 
$datosy[post_text] = preg_replace("(\[.+?\])is",'',$datosy[post_text]); 
 }

//// Para reducir la longitud del texto del mensaje.
// { 
// $datosy[post_text] = substr($datosy[post_text],0,150)."..."; 
// } 

echo "<li class=\"mini\"><a href=\"$directorio/viewtopic.php?t=$rows[topic_id]\" name=\"$rows[topic_title]\" title=\"Pincha aquí para comentar la definición del término &uml;$rows[topic_title]&uml; o leer los comentarios de otros usuarios\">$rows[topic_title]</a>. $datosy[post_text]</li>";
$i++;

} 
 
mysql_free_result($resultado); 
mysql_close($conexion); 
?>
</ul>
Tengo dudas con la eficacia de esta expresión regular para abarcar todas las URLs posibles:

"[\[url=([a-zA-Z0-9\-\_\.\/\:]*)\]]is"

Por lo demás, de momento funciona bien.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable