Foros del Web » Programando para Internet » PHP »

el por que de /\ /is BBCODEC

Estas en el tema de el por que de /\ /is BBCODEC en el foro de PHP en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original function BBcode ( $texto ) {     $a = array (       "/\[i\](.*?)\[\/i\]/is" ,     ...
  #1 (permalink)  
Antiguo 03/02/2010, 17:18
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
el por que de /\ /is BBCODEC

Código PHP:
Ver original
  1. function BBcode($texto){
  2.    $a = array(
  3.       "/\[i\](.*?)\[\/i\]/is",
  4.       "/\[b\](.*?)\[\/b\]/is",
  5.       "/\[u\](.*?)\[\/u\]/is",
  6.       "/\[img\](.*?)\[\/img\]/is",
  7.       "/\[url=(.*?)\](.*?)\[\/url\]/is"
  8.    );
  9.  
  10.    $b = array(
  11.       "<i>$1</i>",
  12.       "<b>$1</b>",
  13.       "<u>$1</u>",
  14.       "<img src=\"$1\" />",
  15.       "<a href=\"$1\" target=\"_blank\">$2</a>"
  16.    );
Tengo dudas de por que se ponen
"/\[img\](.*?)\[\/img\]/is",
  #2 (permalink)  
Antiguo 03/02/2010, 17:21
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

Puede que leer esto te aclare la duda:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 03/02/2010, 17:21
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: el por que de /\ /is BBCODEC

los / al principio y al final son delimitadores (para marcar el inicio y el final) de la expresion regular, los \ son para escapar caracteres con significado especial en la expresion regular, i y s son modificadores de la expresion regular, si no me equivoco la i es para que no sea sensible a mayusculas y minusculas, la s no recuerdo -_-
  #4 (permalink)  
Antiguo 03/02/2010, 18:53
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

¿no sabeis otra guia? buas.. es que no entiendo nada :(
  #5 (permalink)  
Antiguo 03/02/2010, 19:00
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

¿Cuál es precisamente la parte de la guía que no entiendes?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 03/02/2010, 19:05
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

buff toda xD me suena a chino.. no se para que sirver los \ / xD dice que para separar
pero ¿para que separa [img de ] [img\]
o pone esto delante /\ osea nada de nada :(
  #7 (permalink)  
Antiguo 03/02/2010, 19:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

Porque los corchetes dentro de una expresión regular tienen un significado especial. Pero en este caso no se quiere que tenga un significado especial, se quiere capturar el corchete como tal, para eso se usa el carácter de escape \

Véase: http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 03/02/2010, 19:45
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

:(:(
Me aclaro un poco de dudas ahora lo entiendo mejor.. pero sigo sin comprenderlo al 100%
osea no entiendo el porque de las /\
  #9 (permalink)  
Antiguo 03/02/2010, 19:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

Porque el delimitador (en este caso el delimitador es "/" ) también es un carácter especial, si se usa dentro de la expresión debe escaparse, por lo que queda "\/"
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 03/02/2010, 20:00
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

ahhhhhhhh creo y espero que ya entiendo, solo necesito saber por que delimita los corchetes :S no le veo sentido no hacen daño a nadie..
  #11 (permalink)  
Antiguo 03/02/2010, 20:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

¿De verdad estás leyendo los enlaces? Los corchetes no están delimitados, se usa el carácter de escape antes de los corchetes porque de lo contrario se interpretan como caracteres especiales (sirve para agrupar caracteres)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 04/02/2010, 11:39
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

Ok creo que lo e entendido
Neceisto hacer esto pero no funciona bien..

Código PHP:
Ver original
  1. echo preg_replace('[barra]',"/","[barra]");
Lo que se muestra es [/] por lo que he intentado poner
Código PHP:
Ver original
  1. echo preg_replace('\/[barra/]',"/","[barra]");
pero entonces no se muestra nada :(
  #13 (permalink)  
Antiguo 04/02/2010, 11:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

¿Qué es lo que quieres reemplazar exactamente? Ya que si no hay ningún patrón especial, basta con str_replace.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #14 (permalink)  
Antiguo 04/02/2010, 11:44
Avatar de darkasecas  
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: el por que de /\ /is BBCODEC

si solo vas a reemplazar "[barra]" por "/", por que no usas str_replace()?
  #15 (permalink)  
Antiguo 04/02/2010, 11:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: el por que de /\ /is BBCODEC

angel1993, ni siquiera prestas atención...

por favor, lee al menos como se utiliza dicha función antes de intentar usarla...

lee el manual
http://php.net/preg_replace
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 04/02/2010, 11:59
Avatar de angel1993  
Fecha de Ingreso: octubre-2009
Mensajes: 752
Antigüedad: 14 años, 6 meses
Puntos: 22
Respuesta: el por que de /\ /is BBCODEC

para evitar sql injection reemplazo / por [barra] y la comilla por [comilla]
luego lo que pasa que tengo que meter la barra en el bbcode y tengo esto
Código PHP:
Ver original
  1. function BBcode($texto){
  2. $texto = preg_replace('[barra]',"/",$texto);
  3. $texto = preg_replace("[comilla]","'",$texto);
  4.  
  5. $a = array(
  6.       "/\[i\](.*?)\[\/i\]/is",
  7.       "/\[b\](.*?)\[\/b\]/is",
  8.       "/\[u\](.*?)\[\/u\]/is",
  9.       "/\[img\](.*?)\[\/img\]/is",
  10.       "/\[url=(.*?)\](.*?)\[\/url\]/is" ,
  11.       "/\[ico=(.*?)\]/is" ,
  12.        "/\[color=(.*?)\](.*?)\[\/color\]/is"
  13.  
  14.    );
  15.  
  16.    $b = array(
  17.       "<i>$1</i>",
  18.       "<b>$1</b>",
  19.       "<u>$1</u>",
  20.       "<img src=\"$1\" />",
  21.       "<a href=\"$1\" target=\"_blank\">$2</a>" ,
  22.       "<img height=\"15\" src=\"img/icon/$1.png\">" ,
  23.       "<font color=\"$1\">$2</font>"
  24.    );
  25. $texto = preg_replace($a,$b,$texto);
  26. return $texto;  
  27. }
  #17 (permalink)  
Antiguo 04/02/2010, 12:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: el por que de /\ /is BBCODEC

Como ya dije, basta con str_replace para eso.

Y, probablemente baste con reemplazarlos por entidades HTML en lugar de convertirlos a BBCode para evitar problemas con esos caracteres.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.

Etiquetas: Ninguno
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 00:20.