Foros del Web » Programando para Internet » PHP »

Ayuda - str_replace

Estas en el tema de Ayuda - str_replace en el foro de PHP en Foros del Web. Hola amigos , estoy haciendo un editor y me va todo bien , pero cuando llego la hora de hacer el str_replace para un video ...
  #1 (permalink)  
Antiguo 28/02/2009, 10:50
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Ayuda - str_replace

Hola amigos , estoy haciendo un editor y me va todo bien , pero cuando llego la hora de hacer el str_replace para un video me trabe , y no me doy cuenta como hacerlo. El textarea que uso lo mando con $_POST (no se si sirve de algo xd)

El BBCODE que se escribe para youtube es: ['youtube'] [/'youtube']y nose como formar el str_replace , porque lo tendria que dividir en dos partes , la primera para la etiqueta abierta y la otra para la estiqueta cerrada , pero como en el EMBED de youtube el codigo tiene la URL en dos partes del code , aca les muestro como es el code:

Código HTML:
Ver original
  1. <object width="425" height="344">
  2. <param name="movie" value="http://www.youtube.com/v/b1NKREjeEH0&hl=es&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01">
  3. </param><param name="allowFullScreen" value="true">
  4. </param><param name="allowscriptaccess" value="always">
  5. </param><embed src="http://www.youtube.com/v/b1NKREjeEH0&hl=es&fs=1&rel=0&color1=0xe1600f&color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>
me ayudarian a hacer el str_replace (para cambiar ['youtube'] y [/'youtube'] por el video ) ?

Un abrazo
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #2 (permalink)  
Antiguo 28/02/2009, 11:07
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ayuda - str_replace

Para parsear BBCode es mejor usar expresiones regulares:

Código PHP:
<?php
preg_replace
("/\['youtube'\](.*)\[\/'youtube'\]/i""<object width=\"425\" height=\"344\">\n<param name=\"movie\" value=\"$1\">\n</param><param name=\"allowFullScreen\" value=\"true\">\n</param><param name=\"allowscriptaccess\" value=\"always\">\n</param><embed src=\"$1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>"$_POST['textarea']);
?>
  #3 (permalink)  
Antiguo 28/02/2009, 11:30
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

muchas gracias RonRuby por responder , mira no me funciona , lo puse donde se procesa e inserta el textarea , te muestro:

Código PHP:
Ver original
  1. $mensaje = htmlspecialchars($_POST[mensaje]);
  2.  
  3. $antes = array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]', '[left]', '[/left]', '[center]', '[/center]', '[right]', '[/right]','[color=darkred]', '[/color]', '[color=red]', '[/color]', '[color=orange]', '[/color]', '[color=brown]', '[/color]', '[color=yellow]', '[/color]', '[color=green]', '[/color]', '[color=olive]', '[/color]', '[color=cyan]', '[/color]','[color=blue]', '[/color]','[color=darkblue]', '[/color]','[color=indigo]', '[/color]','[color=violet]', '[/color]','[color=violet]', '[/color]','[size=7pt]', '[/size]','[size=9pt]', '[/size]','[size=12pt]', '[/size]','[size=18pt]', '[/size]','[size=24pt]', '[/size]', '[font=Arial]', '[/font]', '[font=Courier New]', '[/font]','[font=Georgia]', '[/font]', '[font=Times New Roman]', '[/font]','[font=Verdana]', '[/font]', '[font=Trebuchet MS]', '[/font]','[font=Lucida Sans]', '[/font]','[font=Comic Sans]', '[/font]');
  4.  
  5. $despues = array('<b>', '</b>', '<i>', '</i>', '<u>', '</u>', '<div align=\"left\">', '</div>', '<div align=\"center\">', '</div>', '<div align=\"right\">', '</div>', '<font color="#CC3300">', '</font>', '<font color="#FF3333">', '</font>' , '<font color="#FF9900">', '</font>', '<font color="#996633">', '</font>', '<font color="#FFFF66">', '</font>','<font color="#669966">', '</font>','<font color="#339966">', '</font>','<font color="#66FFFF">', '</font>','<font color="#6633CC">', '</font>','<font color="#333399">', '</font>', '<font color="#663366">', '</font>','<font color="#6633CC">', '</font>','<font color="#000000">', '</font>', '<font size=\"4\">', '</font>', '<font size=\"5\">', '</font>','<font size=\"6\">', '</font>','<font size=\"7\">', '</font>','<font size=\"8\">', '</font>', '<font face=\"Arial\">', '</font>','<font face=\"Courier New\">', '</font>','<font face=\"Georgia\">', '</font>','<font face=\"Times New Roman\">', '</font>','<font face=\"Verdana\">', '</font>',
  6. '<font face=\"Trebuchet MS\">','</font>','<font face=\"Lucida Sans\">','</font>', '<font face=\"Comic Sans\">','</font>');
  7.  
  8. $mensaje = str_replace($antes, $despues, $mensaje);
  9.  
  10.  
  11. preg_replace("/\['youtube'\](.*)\[\/'youtube'\]/i", "<object width=\"425\" height=\"344\">\n<param name=\"movie\" value=\"$1\">\n</param><param name=\"allowFullScreen\" value=\"true\">\n</param><param name=\"allowscriptaccess\" value=\"always\">\n</param><embed src=\"$1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>", $mensaje);
  12.  
  13.  
  14.  
  15. $loco = nl2br($mensaje);
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #4 (permalink)  
Antiguo 28/02/2009, 12:14
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ayuda - str_replace

Estas seguro que el BBCode que usas es : ['youtube'] y [/'youtube']
(Asi con todo y comillas?)
  #5 (permalink)  
Antiguo 28/02/2009, 21:59
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

perdon RonRuby en relidad es sin las comillas en youtube , pero probe sacandoselas y no pasa nada
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #6 (permalink)  
Antiguo 28/02/2009, 22:20
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda - str_replace

Mmmm....?
Código php:
Ver original
  1. $mensaje = preg_replace(........, $mensaje);

  #7 (permalink)  
Antiguo 28/02/2009, 22:43
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

muchisimas gracias okram , pequeño detalle , no funciona pero avanzamos un poco ahora me muestra un cuadro en blanco que no carga , miren le muestro mi procesar php el que transforma el code :

Código PHP:
Ver original
  1. $mensaje = preg_replace("/\[youtube\](.*)\[\/youtube\]/i", "<object width=\"425\" height=\"344\">\n<param name=\"movie\" value=\"http://youtube.com/watch?v=$1\">\n</param><param name=\"allowFullScreen\" value=\"true\">\n</param><param name=\"allowscriptaccess\" value=\"always\">\n</param><embed src=\"http://youtube.com/watch?v=$1\" type=\"application/x-shockwave-flash\" allowscriptaccess=\"always\" allowfullscreen=\"true\" width=\"425\" height=\"344\"></embed></object>", $mensaje);


Y aca el que sale en los articulos ya agregado un video:

Código HTML:
Ver original
  1. <object width="425" height="344"><br />
  2. <param name="movie" value="http://youtube.com/watch?v=zoJ3YPhQRN0&amp;feature=dir"><br />
  3. </param><param name="allowFullScreen" value="true"><br />
  4. </param><param name="allowscriptaccess" value="always"><br />
  5. </param><embed src="http://youtube.com/watch?v=zoJ3YPhQRN0&amp;feature=dir" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object><br />





Espero que me puedan ayudar a descubrir el error , un abrazo
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #8 (permalink)  
Antiguo 28/02/2009, 23:37
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

listo muchachos solucionado , una pregunta conocen el codigo para insertar SWF (flash ) y/o videos de google (el codigo HTML)
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #9 (permalink)  
Antiguo 01/03/2009, 15:26
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

muchachos se me presento un problema , tambien tengo una opcion para que los usuarios puedan editar las noticias qe enviaron y tengo en este caso que hacer al revez pasar el HTML a BBCODE, bueno el caso es asi , lo pude hacer todo bien menos el ['URL'] y ['/URL'] , porque es asi: si un usuario escribe ['/URL']www.sitio.com['/URL'] el code HTML es asi: <a href="www.misitio.com">www.misitio.com</a> , pero si ponen ['URL'=www.misitio.com]Hola['/URL'] el code html seria : <a href="www.misitio.com">Hola</a> , entonces tengo que convertir cada vez que hay <a href="www.misitio.com">www.misitio.com</a> y <a href="www.misitio.com">Hola</a> en formas diferentes , espero haberme explicado bien , aca les dejo el php pero no anda , creo que no esta bien usar un IF adentro de preg_replace pero no tengo idea de como hacerlo espero que me den una idea ,

Código PHP:
Ver original
  1. $mensaje = preg_replace("/\<a href=(.*)>(.*)<\/a\>/i",
  2.  
  3. if($1==$2)
  4. {
  5.  "[url]$1[/url]"} else {"[url=$1]$2[/url]"}, $mensaje);



PD: La cosa seria asi mas o menos , si el url del sitio y el nombre es igual ['URL'] y ['/URL'] y si es diferente ['URL'=direccion]descripcion['/URL']




Un abrazo
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #10 (permalink)  
Antiguo 01/03/2009, 15:48
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Ayuda - str_replace

La logica de tu aplicación esta mal.

Deberias guardar el BBCode en la base de datos, y parsearlo SOLO al mostrarlo. Osea, en la base de datos guardaras el BBCode.
Asi cuando un usuario tenga que editar su POST, solo cargas el POST desde la base de datos y el BBCode estara intacto, sin trabajo de mas, sin vuelta atras.

Suena mucho mas facil, ¿no?

En todo caso de que NO puedas hacerlo asi y decidas hacerlo como ya lo tienes, entonces necesitarias usar preg_replace_callback()
http://www.php.net/manual/es/functio...e-callback.php
  #11 (permalink)  
Antiguo 01/03/2009, 16:23
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: Ayuda - str_replace

Que facil era XD , muchisimas gracias por pegarme un cachetaso y despertarme..jaajaj


Un gran abrazo RonRuby
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
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 16:17.