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: 20 años, 7 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