Foros del Web » Programando para Internet » PHP »

¿como hago este preg_replace?

Estas en el tema de ¿como hago este preg_replace? en el foro de PHP en Foros del Web. Quiero que me cambie [color=#2600ff] por [color=#2600ff:xxxxxx] pero #2600ff no es siempre el mismo, puede variar y xxxx es una variable Saludos...
  #1 (permalink)  
Antiguo 10/01/2009, 17:42
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
¿como hago este preg_replace?

Quiero que me cambie
[color=#2600ff]

por [color=#2600ff:xxxxxx]

pero #2600ff no es siempre el mismo, puede variar y xxxx es una variable

Saludos
  #2 (permalink)  
Antiguo 10/01/2009, 18:25
 
Fecha de Ingreso: julio-2007
Mensajes: 31
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: ¿como hago este preg_replace?

Perdona no he entendido muy bien lo que deseas hacer.
si quieres crear un nº aleatorio:
Cita:
$numero = rand(50,100);
el nº sera desde el 50 al 100
  #3 (permalink)  
Antiguo 10/01/2009, 18:39
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: ¿como hago este preg_replace?

No hombre, lo que quiero hacer es mediante preg_replace todas las apariciones que aparezcan de por ejemplo [color=#2600ff] , siendo 2600ff un valor diferente en cada aparición, o sea que puede ser 8888ff o red o green y lo quiero cambiar por [color=#2600ff:xxxxxx], y aqui xxxxxx es el valor de una variable fija o sea xxxxxx siempre será el mismo.
Un ejemplo:
Tengo:
$a= 1234
[color=#2600ff]
y despues de pasar el preg_replace que quede:
[color=#2600ff:1234]

como ves, en rojo he marcado la diferencia.

Gracias por tu atención.
  #4 (permalink)  
Antiguo 10/01/2009, 19:33
Avatar de hgp147  
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 17 años, 3 meses
Puntos: 36
Respuesta: ¿como hago este preg_replace?

Código PHP:
$cadena "[color=#2600ff]";

$a1234;

$cadena preg_replace("/^\[(color=[a-z0-9\#]+)\]$/i""[\\1:$a]"$cadena);

echo 
$cadena
__________________
Spread Firefox | Download Day 2008
¡Únete en nuestra misión para alcanzar el Record Guinness al software más descargado en 24 horas! http://www.spreadfirefox.com/es-ES/worldrecord/

Última edición por hgp147; 10/01/2009 a las 20:15
  #5 (permalink)  
Antiguo 10/01/2009, 23:07
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: ¿como hago este preg_replace?

Hola esto esta muy bien pero hay un detalle:
Si $cadena es :
Código PHP:
$cadena "[color=#2600ff]"//está perfecto 
Pero el problema es si
Código PHP:
$cadena "xxx[color=#2600ff]xxx"//con caracteres antes y o después 
  #6 (permalink)  
Antiguo 10/01/2009, 23:17
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: ¿como hago este preg_replace?

Elimina el ^ al principio de la expresion regular, y el $ al final.
  #7 (permalink)  
Antiguo 11/01/2009, 08:36
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Respuesta: ¿como hago este preg_replace?

Perdonad que me meta, pero trato de aprender a usar bien expresiones regulares y mi pregunta es:

En

$cadena = preg_replace("/^\[(color=[a-z0-9\#]+)\]$/i", "[\\1:$a]", $cadena);

¿Qué hace el ^ el # el + y la /i?

En la segunda parte ya ni te cuento, el \\1:$a no tengo ni pajolera idea de dónde sale.

¿Un buen manual on line de estas cosas no hay con ejemplos "progresivos"?
  #8 (permalink)  
Antiguo 11/01/2009, 08:56
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: ¿como hago este preg_replace?

Revisa este tema, esta bien explicado:

http://www.forosdelweb.com/f18/aport...s-pcre-646110/
  #9 (permalink)  
Antiguo 11/01/2009, 11:25
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Respuesta: ¿como hago este preg_replace?

Cita:
Iniciado por Ronruby Ver Mensaje
Revisa este tema, esta bien explicado:

http://www.forosdelweb.com/f18/aport...s-pcre-646110/
Sí ahí hay mucha explicación y muy clara, gracias. Lo que no tengo claro en el ejemplo del compañero es:
$cadena = preg_replace("/^\[(color=[a-z0-9\#]+)\]$/i", "[\\1:$a]", $cadena);

qué hace el +.

Luego tengo la duda, en ese mismo ejemplo ¿ponga lo que ponga antes del ] lo reemplazaría? ¿aunque fueran 10 líneas con espacios y todo tipo de signos? (eso me sería muy útil para una aplicación que estoy haciendo).
  #10 (permalink)  
Antiguo 11/01/2009, 11:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿como hago este preg_replace?

mmm... y seguro que leíste todo???

Cita:
n+ Uno o mas de n

[...]

s Todo - el . (punto) captura todo, incluyendo nueva linea
+ significa "mínimo uno"

vaya... pero el grupo [a-z0-9\#] solo captura de la a-z del 0-9 y #

para lo que quieres, incluyendo saltos de linea debes probar así...

/.+/s

ya que . es todo (sin saltos de linea), pero al agregarle el modificador s escanea, incluso los salto de linea...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 11/01/2009, 14:19
Usuario no validado
 
Fecha de Ingreso: marzo-2004
Mensajes: 349
Antigüedad: 20 años
Puntos: 0
Respuesta: ¿como hago este preg_replace?

Cita:
Iniciado por pateketrueke Ver Mensaje
mmm... y seguro que leíste todo???



+ significa "mínimo uno"

vaya... pero el grupo [a-z0-9\#] solo captura de la a-z del 0-9 y #

para lo que quieres, incluyendo saltos de linea debes probar así...

/.+/s

ya que . es todo (sin saltos de linea), pero al agregarle el modificador s escanea, incluso los salto de linea...
Aham... empiezo a entender toda esa acumulación de signos raros que durante años ponía en actos de fe...

Mañana pruebo en el curro a ver qué sale, gracias
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 21:41.