Foros del Web » Programando para Internet » PHP »

Etiquetas personalizadas

Estas en el tema de Etiquetas personalizadas en el foro de PHP en Foros del Web. Hola a todos... Tengo una web de noticias... donde dichas noticias son almacenadas en una base de datos MySQL. Resulta... que si quiero insertar una ...
  #1 (permalink)  
Antiguo 09/01/2005, 13:09
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Etiquetas personalizadas

Hola a todos...

Tengo una web de noticias... donde dichas noticias son almacenadas en una base de datos MySQL. Resulta... que si quiero insertar una imagen debo hacerlo de esta forma en mi BD:

<div><img src="photos/samsung_sms.jpg" /></div>

Y para insertar un vínculo debo hacerlo asi:

<a href="destino.php">Vinculo</a>

Me gustaría... buscar un método más sencillo para hacer esto... algo asi como una etiqueta personalizada para resumir un poco las etiquetas HTML... de tal forma que PHP se encargue de convertirlas. Algo asi como este foro:

[IMG ]http://lalalalalalal.png[/IMG ]

¿Qué me recomiendan?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #2 (permalink)  
Antiguo 09/01/2005, 14:46
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
para la imagen has un replace

algo asi

<?
$replace=$var_de_msg;
$replace=str_replace("[img]",'<div><img src="',$replace);
$replace=str_replace("[/img]",'"></div>',$replace);
?>

No se si entiendes la idea.. luego guardas la variable $replace en lugar de $var_de_msg...
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 09/01/2005, 20:31
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Ok... perfecto. Ya hice lo de las imágenes. Ahora para mis imágenes puedo usar el formato:

[img]URL[/img]

Pero con los enlaces no puedo hacer lo mismo, debido a que un enlace tiene 2 parámetros:

1. URL del enlace.
2. Nombre del enlace.

Si tratamos de hacer un str_replace() a algo asi como:

[ url=http://www.google.com]Google.com[/url ]

No se podría... tendríamos que usar expresiones regulares... ¿qué opinan?
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #4 (permalink)  
Antiguo 09/01/2005, 21:40
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Hola, necesariamente tendrías que utilizar expresiones regulares, aquí un ejemplo simple:

Código PHP:
 <?php
     $url
="[url= [url]http://www.buayacorp.com]Programación[/url] y Diseño[/url]";
     
$url=preg_replace("`\[url\s*=\s*(.*)?\](.*?)\[/url\]`is"'<a href="$1">$2</a>'$url);
     echo 
$url;
 
?>
Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #5 (permalink)  
Antiguo 09/01/2005, 22:08
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Pues ese ejemplo que me diste funciona perfectamente...

Sin embargo... simplifiqué la expresión a esto: `\[url=(.*)?\](.*?)\[/url\]`is

Por cierto... ¿qué significa el símbolo ` (acento invertido)?

¿Por qué en el segundo agrupamiento colocas el "?" dentro del subpatrón?

Adicionalmente, la etiqueta de las imágenes la hice con regexp también, asi:

Código PHP:
$result=preg_replace("`\[img](.*)?\[/img\]`is","<img src=\"photos/$1\" />",$result); 
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.

Última edición por Takitei; 09/01/2005 a las 22:15
  #6 (permalink)  
Antiguo 09/01/2005, 22:26
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Hola, utilizo ...url\s*=\s*... por si el url es de la forma:
[url = http://buayacorp.com]Algo[/ul]

Ahora se utiliza el ` para "escapar" la expresión regular, las diferentes formas de que se reconozca una expresión regular son (al menos las que conozco):

- "#\[url\s*=\s*(.*)?\](.*)?\[/url\]#is"
- "`\[url\s*=\s*(.*)?\](.*)?\[/url\]`is"
- "/\[url\s*=\s*(.*)?\](.*)?\[\/url\]/is", se tiene que escapar /

Ahora el ? dentro del segundo subpatrón es un error de tipeo
Sobre la expresión regular que mandas, te falta escapar un ]

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño

Última edición por xknown; 09/01/2005 a las 22:40
  #7 (permalink)  
Antiguo 09/01/2005, 22:36
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Ahhh ok... toda expresión debe estar dentro de esos carácteres. Entiendo. Interesante... eso no aparece en mi libro de PHP.

En fin... ya logré hacer mis etiquetas. Gracias por tu apoyo xknown y Fulano!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #8 (permalink)  
Antiguo 10/01/2005, 01:47
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

En pear.php.net existe una clase de parseo de bbcode, que es como se llama este tipo de etiquetas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 12/01/2005, 15:44
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Bueno... decidí eliminar el PCRE_DOTALL debido a que si lo usaba, no me permitía insertar varias imágenes o varios links en el mismo documento.

Un saludo!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #10 (permalink)  
Antiguo 25/07/2005, 12:27
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Hola nuevamente,

Se me esta presentando un problema con las etiquetas. El problema viene cuando trato de convertir un trozo de texto que contiene retornos de lineas. Por ejemplo:

Código PHP:
$texto="
[tag]
Private Sub Form_Load()
End Sub
[/tag]

Un poco de texto aca....

[tag]
Private Sub Form_Load()
End Sub
[/tag]
"
;

$result=preg_replace("`\[tag](.*)?\[/tag\]`is",'<div class="code">$1</div>',$texto); 
Esto esta tomandome el texto que se encuentra entre el primer [tag] y el último [/tag], lo cual es incorrecto. Debería abrir y cerrar dos veces y mostrarme "Un poco de texto aca...." fuera del div.

¿Cómo puedo corregir esto?... ya probé quitantole el "s" (PCRE_DOTALL) pero obviamente el code que quiero convertir tiene saltos de línea y debo tomarlos en cuenta.

Thankz!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
  #11 (permalink)  
Antiguo 25/07/2005, 12:43
Avatar de Takitei  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 1.231
Antigüedad: 19 años, 7 meses
Puntos: 5
Bahh más fácil:

Código PHP:
$texto=str_replace('[code]''<div class="code">'$texto);
$texto=str_replace('[/code]''</div>'$texto); 
Gracias anyway!
__________________
Takitei
Ingeniarte.com
DannyHerran.com
"Dadme un punto de apoyo y moveré la tierra" - Arquímedes.
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 22:56.