[SOLUCIONADO] Como crear Tags BBCode para YOUTUBE ??

Iniciado por Diabliyo, 17 Julio 2008, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Hola:

En mi sistema web tengo varios TAGS BBCode disponibles, pero me gustaria poner a disposicion un TAGS BBCode de Youtube, para que los usuarios puedan postear el video de youtube y se vea ahi mismo en la pagina. Espero y me puedan ayudar !!!

Mientras, les platicare mi metodo para crear BBCode:

Primeramente, cualquier mensaje que se agrege ya sea por mi o tipo comentario pasa por una funcion llamada proteger_cadena(), esta protege la cadena para evitar Injeccion HTML, Injeccion SCRIPT e Injeccion SQL, despues esta misma funcion realiza el llamado de otra funcion que es msg2msgtags($cadena) que se encarga de hacer el BBCode. El codigo es el siguiente:

Funcion msg2msgtags()
Código (php) [Seleccionar]
<?php
function msg2msgtags$mensaje )
{
if( strchr$mensaje"[b]" ) &&  strchr$mensaje"[/b]" ) )
{
$mensajestr_replace"[b]""<b>"$mensaje );
$mensajestr_replace"[/b]""</b>"$mensaje );
}
if( strchr$mensaje"[i]" ) &&  strchr$mensaje"[/i]" ) )
{
$mensajestr_replace"[i]""<i>"$mensaje );
$mensajestr_replace"[/i]""</i>"$mensaje );
}
if( strchr$mensaje"[u]" ) &&  strchr$mensaje"[/u]" ) )
{
$mensajestr_replace"[u]""<u>"$mensaje );
$mensajestr_replace"[/u]""</u>"$mensaje );
}
if( strchr$mensaje"[center]" ) &&  strchr$mensaje"[/center]" ) )
{
$mensajestr_replace"[center]""<center>"$mensaje );
$mensajestr_replace"[/center]""</center>"$mensaje );
}
if( strchr$mensaje"[img]" ) &&  strchr$mensaje"[/img]" ) )
{
$mensajestr_replace"[img]""<img class=\"img_post\" src=\""$mensaje );
$mensajestr_replace"[/img]""\">"$mensaje );
}
//OJO, los '\' solo los puse para que salieran en este POST, ya que si quito los '\'
//el codigo sale CORTADO en este post...
if( strchr$mensaje"\[code\]" ) ||  strchr$mensaje"\[/code\]" ) )
{
$mensajestr_replace"\[code\]""<div id=\"etiqueta_code\">"$mensaje );
$mensajestr_replace"\[/code\]""</div>"$mensaje );
}

//<object width="425" height="344">
//<param name="movie" value="http://www.youtube.com/v/Iur_NBn6b2k&hl=en&fs=1"></param>
//<param name="allowFullScreen" value="true"></param>
//<embed src="http://www.youtube.com/v/Iur_NBn6b2k&hl=en&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed>
//</object>
/*if( strchr( $mensaje, "[youtube]" ) ||  strchr( $mensaje, "[/youtube]" ) )
{
$mensaje= str_replace( "[youtube]", "", $mensaje );
$mensaje= str_replace( "[/youtube]", "", $mensaje );
}*/

if( strchr$mensaje"\n" ) )
{
$mensajestr_replace"\n""<br>"$mensaje );
}
if( strchr$mensaje"\t" ) )
{
$mensajestr_replace"\t""&nbsp;&nbsp;&nbsp;"$mensaje );
}
if( strchr$mensaje"<script>" ) )
{
$mensajestr_replace"<script>"htmlentities"<script>"ENT_QUOTES ), $mensaje );
}
if( strchr$mensaje"</script>" ) )
{
$mensajestr_replace"</script>"htmlentities"</script>"ENT_QUOTES ), $mensaje );
}
return $mensaje;
}
?>


Funcion proteger_cadena()
Código (php) [Seleccionar]
<?php
function proteger_cadena$cadena )
{
$out=$cadena;

if( strchr$out"<" ) ) //con esto vitamos injeccion de codigo
$outstr_replace"<"htmlentities("<"ENT_QUOTES), $out );
if( strchr$out">" ) ) //con esto vitamos injeccion de codigo
$outstr_replace">"htmlentities(">"ENT_QUOTES), $out );

$outmsg2msgtags($out);

return $out;
}
?>


Codigo de Ejemplo, antes de que el mensaje de guarde en la base de datos:

<?php
$msg
proteger_cadena($_POST["mensaje_noticia"]);

//generamos array de insercion mysql
$valores= array(
"autor"=>"'"$_SESSION["log_usr"]. "'",
"titulo"=>"'"htmlentities($_POST["titulo_noticia"], ENT_QUOTES). "'"
"mensaje"=>"'"htmlentities($msgENT_QUOTES). "'"
"fecha"=>"'"time(). "'",
"menu"=>"'"htmlentities($buf_menu["NOMBRE"], ENT_QUOTES). "'",
"sección"=>"'"htmlentities($buf_sec["NOMBRE"], ENT_QUOTES). "'" );

unset($msg);

if( insertar_bdd"NOTICIAS"$valores )==)
echo "Error en la Insercion de los Datos.";
else
echo "Datos Agregados con Exito.";
?>

Diabliyo

Sera que no me he explicado bien o que onda ??, vaya, lo que trato de hacer es algo exatamente igual a como si pusieramos un video youtube pero usando BBCode... Si se fijan un poquito, al contestar o poner un POST, aparece un icono con el logotipo de YOUTUBE y pone algo asi:

\[youtube=425,350\]\[/youtube\]

En fin, no es dificil poner eso, sino, como interpretarlo para que quede listo y visible el video ??

bye bye

Nakp

pues... copia el embed de youtube y haces que la url que coloque entre las tags las ponga en

src="aqui"

vamos.. no es dificil si ha hiciste una para img es prácticamente lo mismo ;)
Ojo por ojo, y el mundo acabará ciego.

Diabliyo

Cita de: Nakp en 31 Julio 2008, 07:42 AM
pues... copia el embed de youtube y haces que la url que coloque entre las tags las ponga en

src="aqui"

vamos.. no es dificil si ha hiciste una para img es prácticamente lo mismo ;)

Me pregunto: "has echo lo que yo pregunto ?"... Ya que si fuera asi de simple, no estuviera preguntando :S daaaa

Por favor si no van a colaborar mejor evitense la pena y peresa de escribir :S !!

bye bye

Freeze.

#4
Estoy usando esto actualmente para mi BBCode ;)

Código (php) [Seleccionar]
function BBcode($str) {
    $simple_search = array(
                '/\[b\](.*?)\[\/b\]/is',
                '/\[i\](.*?)\[\/i\]/is',
                '/\[u\](.*?)\[\/u\]/is',
'/\[s\](.*?)\[\/s\]/is',
                '/\[url\=(.*?)\](.*?)\[\/url\]/is',                         
                '/\[url\](.*?)\[\/url\]/is',                             
'/\[align\=(left|center|right|justify)\](.*?)\[\/align\=(left|center|right|justify)\]/is',
                '/\[img\](.*?)\[\/img\]/is',                           
                '/\[font\=(.*?)\](.*?)\[\/font\]/is',                   
                '/\[size\=(.*?)\](.*?)\[\/size\]/is',                   
                '/\[color\=(.*?)\](.*?)\[\/color\]/is',
'/\[code\](.*?)\[\/code\]/is',
'/\[quote\](.*?)\[\/quote\]/is',
'/\[youtube](.*?)\[\/youtube\]/is',
                );
    $simple_replace = array(
                '<strong>$1</strong>',
                '<em>$1</em>',
                '<u>$1</u>',
'<strike>$1</strike>',
                '<a href="$1">$2</a>',
                '<a href="$1">$1</a>',
                '<div style="text-align:$1;">$2</div>',
                '<img src="$1" />',
                '<span style="font-family:$1;">$2</span>',
                '<span style="font-size:$1;">$2</span>',
                '<span style="color: $1;">$2</span>',
'<span id="code">$1</div>',
'<span id="quote">$1</div>',
'<span style="display:block;"><object width="350" height="275"><param name="movie" value="http://www.youtube.com/v/$1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" wmode="transparent" width="350" height="275"></embed></object></span>',
                );

    $str = htmlentities($str);
$str = preg_replace ($simple_search, $simple_replace, $str);
$str = nl2br($str);
$str = str_replace("<br />","",$str);
    return $str;
}


Y me funciona sin problemas ;)

Aca te hago uno para tu youtube ;) A mi tambien me hace falta asi que no tengo perdida :xD

Código (php) [Seleccionar]

//Esto lo agregas en el primer arrray:

'/\[youtube](.*?)\[\/youtube\]/is',

//Esto en el segundo array:

'<span style="display:block;"><object width="350" height="275"><param name="movie" value="http://www.youtube.com/v/$1"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/$1" type="application/x-shockwave-flash" wmode="transparent" width="350" height="275"></embed></object></span>',


Me avisas si te funciona ;)

Se usa como
;)

Tambien debes agregar esto:
$str = str_replace("<br />","",$str);
Antes del:
return $str;

Diabliyo

Me salvaste la vida Freeze, ahorita en un ratito mas cuelgo el codigo resultante :D !!...