23 mensajes. Página 1 de 2 Autor Mensaje
Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 Pequeña ayudida con un "filtro". Hola!
Tengo una pequeña duda. De partida, si digo filtro, es por que no se me ocurrio algo mejor para definir mi problemita.
Bueno, el caso es el siguiente.
En mi web tengo un foro phpBB, al cual le instalé un MOD para publicar articulos. Pero en la portada y diversas partes de la web, hay varios script que muestran las ultimas publicaciones.
Por ejemplo:
http://anistation.net/noticias/ El problema, como se puede ver, esta en la ultima publicacion...Cuando en el articulo utilizo el BBCODE para poner negrita, poner enlaces y cosas así, en la pagina que se ve arriba, se ve que en la descripcion aparecen caracteres como.
[b:3af4cd9096][/b:3af4cd9096] Cuando es Negrita O
[URL][/URL] Cuando es enlace
Mi pregunta es, ¿Como se hace, para que en el caso que apareciera uno de esos caracteres, se suprima y aparesca como las noticias de abajo?.
Intente hacerlo con los IF pero no resulto, alguna ayudita por favor.
Gracias de antemano =)
06/Ago/2008 04:28 GMT+1 NEOXGEOX Webmaster Positivo Mensajes: 735 Desde: 28/Sep/2005 RE: Pequeña ayudida con un "filtro". Y si en vez de utiluizar bbcode, utilizas HTML, tal vez funcione.
07/Ago/2008 16:44 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". x'D
No es la idea.
Okey, miren, intente hacerlo así:
Código:
$desc = substr(stripslashes($article['article_text']),0,125); if($desc == "[b:$bbid]") { $desc = "<b>"; }
Donde $bbid es la id del bbcode usado en cada articulo, puede verse aqui:
http://anistation.net/nuevo.php
Pero no se como hacer que cuando la variable $desc contenca caracteres del tipo [b:bbid], [img:bbid], [size:bbid], etc.
Los suprima de preferencia.
¿Alguna sugerencia?
30/Ago/2008 03:03 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". En internet he buscado harto, pero solo he visto funciones que reemplazan caracteres...no que las borren.
Ayuda por favor.
30/Ago/2008 04:59 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Reemplazar y borrar es lo mismo. Si reemplazas por un carácter vacío. Has de reemplazarlo en php antes de cargarlo. Tienes que aprender a usar bbcode con un campo dinámico (que será la id). Por poner un ejemplo:
Código:
$texto = preg_replace("\[b:(.*)\]/(.*)\[/b\]", '$2', $texto);
El id y el [b] lo suprimimos, dejamos solo $2 que es lo que está dentro de [b:id]
PD: El código lo acabo de escribir, igual se me ha ido algún carácter y está mal, de todas formas es sólo para ilustrar.
04/Sep/2008 23:04 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". A ver si entiendo:
La id del bbcode la tengo, en la variable $bbid. Ahora, si mi variable que contiene el texto es $desc.
El codigo quedaria?
$desc = preg_replace("\[b:(.*)\]/(.*)\[/b\]", '$bbid', $desc);
Sorry, no entiendo mucho T.T
05/Sep/2008 05:20 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Quedaría: $desc = preg_replace("\[b:(.*)\]/(.*)\[/b\]", '$2', $desc); Al menos, eso creo. Pruébalo.
05/Sep/2008 06:41 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". Dió error, dice:
Warning : preg_replace() [function.preg-replace ]: Delimiter must not be alphanumeric or backslash in /home/myless/public_html/nuevo.php on line 46
¿Que puede ser?
05/Sep/2008 13:16 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Prueba con $desc = preg_replace("[b:(.*)](.*)[/b]", '$2', $desc); Si no funciona reviso el preg_replace, pero debería funcionar.
05/Sep/2008 16:07 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". Lo siento, ahora dice:
Warning : preg_replace() [function.preg-replace ]: Unknown modifier '(' in /home/myless/public_html/nuevo.php on line 46
En todo caso, el codigo que me hiciste borraria el [b:$bbid] ¿verdad?. En el caso que funcione, para borrar el [img:$bbid] sería:
$desc = preg_replace("[img:(.*)](.*)[/img]", '$2', $desc);
Y así susesivamente hasta borrar todos los bbcodes ¿no?
Gracías de antemano =).
05/Sep/2008 22:44 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Sí, en efecto. Esa es la idea. Ahora sólo hay que buscar cómo es el código correcto. He encontrado este: $desc = preg_replace("`\[b:(.*)?\](.*)?\[/b\]`is", "$2", $desc); Si no funciona, empieza por quitar los ` y si sigue sin funcionar, podría intentar encontrarte otro o puedes buscar tú en google y aprender cómo funciona preg_replace.
06/Sep/2008 04:01 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". Hola.
Prové el ultimo codigo, no dió error, pero no elimino el bbcode.
Estuve viendo y prové con este:
$desc = preg_replace("[b:$bbid]", "$2", $desc);
Y funcionó mas o menos, elimina b:id_del bbecode, pero al imprimir aparece [], por lo tanto no lo elimina por completo
Ayuda please T_____T
06/Sep/2008 04:49 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Si lo vas a hacer así, prueba esto: $desc = preg_replace("[b:$bbid]", "", $desc); Te interesa borrarlo por completo no sustituirlo por $2
06/Sep/2008 20:09 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". 06/Sep/2008 21:06 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Me sale acceso denegado.
¿El código es muy largo? ¿Podría verlo entero?
07/Sep/2008 01:18 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". Jaja Sorry, es que estaba provando otros script, mira, este es el codigo:
Código:
<?php //limite de sacadas de la base de datos $limit = 100; $result = mysql_query("SELECT a.article_id, a.chapter_id, a.time, t.article_title, t.article_text, t.article_id, t.articulos_icon, t.bbcode_uid, c.chapter_name, c.chapter_parent_id, c.chapter_name FROM phpbb_cms_articles a INNER JOIN phpbb_cms_articles_text t on a.article_id = t.article_id INNER JOIN phpbb_cms_chapters c on a.chapter_id = c.chapter_id WHERE a.chapter_id=33 ORDER BY a.time desc LIMIT $limit") or die(mysql_error()); $color = 0; while($article = mysql_fetch_array($result)) { //titulo de los articulos $titulo = substr(stripslashes($article['article_title']),0,37); //bbcode uid $bbid = $article['bbcode_uid']; // ID de los articulos $id = $article['article_id']; //iconos de los articulos $icono = $article['articulos_icon']; //descripcion de los articulos $desc = substr(stripslashes($article['article_text']),0,125); $desc = preg_replace("[img:$bbid]", "", $desc); $desc = preg_replace("[b:$bbid]", "", $desc); //url de la web $url_path = "http://anistation.net/"; //nombre de la categoria $pname = $article['chapter_parent_id']; if($pname == 7) { $pname = "Anime"; } if($pname == 22) { $pname = "Manga"; } if($pname == 27) { $pname = "Juegos"; } if($pname == 35) { $pname = "Películas"; } //nombre de la categoria $cname = $article['chapter_name']; //fecha $time = $article['time']; $fecha = getdate($time); $d = $fecha['mday']; $m = $fecha['mon']; $a = $fecha['year']; if($m < 10) { $m = "0".$m; } if($d < 10) { $d = "0".$d; } if($color == 0){ echo"<div align='center'> <center> <table border='0' width='447' cellpadding='0' bgcolor='#FFFFFF' cellspacing='0'> <tr> <td width='123' bgcolor='#3770B1' background='http://anistation.net/images/design/center/last_updates/bg_news_2.jpg'><div align='center'> <center> <table border='0' width='106' height='80' cellspacing='0' cellpadding='0'> <tr> <td width='100%' background='http://anistation.net/images/design/center/last_updates/bg_news_2.jpg'><p align='center'><a href='http://anistation.net/novedades/ver_noticia.php?aid=$id' title='$titulo'><img border='0' src='$icono' width='100' height='74'></a></td> </tr> </table> </center> </div> </td> <td width='631' valign='top' background='http://anistation.net/images/design/center/last_updates/bg_news_2.jpg'><font color='#FFFFFF'><b><font size='2' face='Verdana'> <img border='0' src='http://anistation.net/images/design/menu/arrow.gif' width='8' height='7'></font></b><font size='2' face='Verdana'><b>$pname</b></font><font size='2' face='Verdana'>| $d|$m|$a</font></font><br><font color='#FFFFFF'><b> <img border='0' src='http://anistation.net/images/design/menu/arrow.gif' width='8' height='7'></b></font><font face='Verdana' size='2'><a href='http://anistation.net/novedades/ver_noticia.php?aid=$id' title='$titulo'><font color='#FFFFFF'><b>$titulo</b></font></a><br><font color='#FFFFFF'>$desc...</font></font></td> </tr> </table> </center> </div> <div align='center'> <center> <table border='0' width='100' cellspacing='0' cellpadding='0'> <tr> <td width='100%'><img border='0' src='http://anistation.net/images/design/center/last_updates/linea_punteada.jpg' width='447' height='5'></td> </tr> </table> </center> </div>"; } if($color == 1){ echo"<div align='center'> <center> <table border='0' width='447' cellpadding='0' bgcolor='#3770B1' cellspacing='0'> <tr> <td width='119' bgcolor='#FFFFFF' background='http://anistation.net/images/design/center/last_updates/bg_news.jpg_2'><div align='center'> <center> <table border='0' width='106' height='80' cellspacing='0' cellpadding='0'> <tr> <td width='100%'><p align='center'><a href='http://anistation.net/novedades/ver_noticia.php?aid=$id' title='$titulo'><img border='0' src='$icono' width='100' height='74'></a></td> </tr> </table> </center> </div> </td> <td width='635' valign='top' background='http://anistation.net/images/design/center/last_updates/bg_news_blanco.jpg'><font color='#3770B1'><b><font size='2' face='Verdana'> <img border='0' src='http://anistation.net/images/design/menu/arrow.gif' width='8' height='7'></font></b><font size='2' face='Verdana'><b>$pname </b>|</font><b><font size='2' face='Verdana'> </font></b><font size='2' face='Verdana'>$d|$m|$a</font></font><br><font color='#3770B1'><b> <img border='0' src='http://anistation.net/images/design/menu/arrow.gif' width='8' height='7'></b></font><font face='Verdana' size='2'><a href='http://anistation.net/novedades/ver_noticia.php?aid=$id' title='$titulo'><font color='#3770B1'><b>$titulo</b></font></a><br><font color='#3770B1'>$desc...</font></font></td> </tr> </table> </center> </div> <div align='center'> <center> <table border='0' width='100' cellspacing='0' cellpadding='0'> <tr> <td width='100%'><img border='0' src='http://anistation.net/images/design/center/last_updates/linea_punteada2.jpg' width='447' height='5'></td> </tr> </table> </center> </div>"; } if($color == 0) { $color = 1; } else { $color = 0; } } //mysql_close($conexion); ?>
07/Sep/2008 02:07 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". He estado provando y no consigo borrarlo completamente... T.T
07/Sep/2008 21:47 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". Me sigue saliendo acceso denegado. Quiero ver qué es lo que quieres quitar.
08/Sep/2008 07:04 GMT+1 Overlick Webmaster Habitual Mensajes: 41 Desde: 30/Ene/2007 RE: Pequeña ayudida con un "filtro". 08/Sep/2008 22:57 GMT+1 EffectedCard Administrador Usuario PRO Mensajes: 9.272 Desde: 16/Oct/2004 RE: Pequeña ayudida con un "filtro". ¿Puedes ponerlo sin ningún preg_replace y te doy yo uno completo (para lo que veo) y comprobamos cómo funciona?
08/Sep/2008 23:06 GMT+1 23 mensajes. Página 1 de 2