Foros del Web » Programando para Internet » PHP »

Duda con str_replace

Estas en el tema de Duda con str_replace en el foro de PHP en Foros del Web. Hola! Tengo una duda, tengo este codigo para hacer reemplazo de funciones: Código PHP: $arrFrom  = array( "[b]" , "[/b]" , "¡" , "ñ" , "[color" ...
  #1 (permalink)  
Antiguo 19/12/2011, 09:40
Avatar de Soir  
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 1
Duda con str_replace

Hola!

Tengo una duda, tengo este codigo para hacer reemplazo de funciones:

Código PHP:
$arrFrom = array("[b]","[/b]","¡","ñ","[color","[/color]"); 
$arrTo = array("<strong>","</strong>","&iexcl","&ntilde","<font color","</font>"); 
$word $resultados_temas["contenido"]; 
$funcion_contenido str_replace($arrFrom$arrTo$word); 
Me gustaría saber como reemplazar por ejemplo si se utiliza [color=#FFFFBF] porque he probado reemplazar [color por <font color pero claro, me quedaría así el resultado:

<font color=#FFFFBF]

Había pensado en hacer algo para reemplazar todas las funciones de [color=x] que las pasara a <font color="x">

¿Alguna idea?
  #2 (permalink)  
Antiguo 19/12/2011, 09:44
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda con str_replace

Puedes usar expresiones regulares

PHP: preg_replace

Ejemplo:

Código PHP:
$funcion_contenido preg_replace('/<font color=(.*?)>/''[color=(.*?)]',$word); 
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 19/12/2011, 11:19
Avatar de Soir  
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Duda con str_replace

Gracias por la respuesta, al final lo he solucionado así, por los anidados y tal:

Código PHP:
// Reemplazo de funciones
$word $resultados_temas["contenido"]; 
while (
preg_match('^\[color=(.*?)\](.*?)\[\/color\]^'$word )> 0){
        
$word=preg_replace('^\[color=(.*?)\](.*?)\[\/color\]^''<font color="\\1">\\2</font>'$word);

  #4 (permalink)  
Antiguo 19/12/2011, 12:08
Avatar de Soir  
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Duda con str_replace

¿Sería posible crear una función con ese código?

He probado con:

Código PHP:
function foro_reemplazo$word ){
    while (
preg_match('^\[color=(.*?)\](.*?)\[\/color\]^'$word )> 0){
        
$word=preg_replace('^\[color=(.*?)\](.*?)\[\/color\]^''<font color="\\1">\\2</font>'$word);
}

Código PHP:
foro_reemplazo($word); 
Pero no va :S
  #5 (permalink)  
Antiguo 19/12/2011, 15:27
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda con str_replace

Sí, es posible.


Pero, no entiendo el pq del bucle (preg_replace los cambia todos, no? XD)

Sólo te falta un return en esa función, así te funcionará, sería algo así:
Código PHP:
$word foro_reemplazo($word); 
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 19/12/2011, 15:42
Avatar de Soir  
Fecha de Ingreso: marzo-2011
Mensajes: 40
Antigüedad: 13 años, 2 meses
Puntos: 1
Respuesta: Duda con str_replace

Pues algunos no me los cambiaba jajajaja...

La función me sigue sin ir... te pongo lo que tengo, en un archivo tengo esto:

Código PHP:
function foro_reemplazo$word ){
    while (
preg_match('^\[color=(.*?)\](.*?)\[\/color\]^'$word )> 0){
        
$word=preg_replace('^\[color=(.*?)\](.*?)\[\/color\]^''<font color="\\1">\\2</font>'$word);
}

En el archivo del contenido tengo esto:
Código PHP:
// Reemplazo de funciones
$word $resultados_temas["contenido"]; 
$word foro_reemplazo($word); 
$arrFrom = array("[b]","[/b]","[i]","[/i]","[u]","[/u]","¡","ñ","[list]","[/list]","[*]"); 
$arrTo = array("<strong>","</strong>","<em>","</em>","<u>","</u>","&iexcl","&ntilde","<ul>","</ul>","<li>"); 
$funcion_contenido str_replace($arrFrom$arrTo$word); 
También he probado a usar:
Código PHP:
// Reemplazo de funciones
$word foro_reemplazo($resultados_temas["contenido"]); 
$arrFrom = array("[b]","[/b]","[i]","[/i]","[u]","[/u]","¡","ñ","[list]","[/list]","[*]"); 
$arrTo = array("<strong>","</strong>","<em>","</em>","<u>","</u>","&iexcl","&ntilde","<ul>","</ul>","<li>"); 
$funcion_contenido str_replace($arrFrom$arrTo$word); 

Y nada :S!
  #7 (permalink)  
Antiguo 19/12/2011, 15:44
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Duda con str_replace

En la función, te falta un return

Código PHP:
function foro_reemplazo$word ){ 
    while (
preg_match('^\[color=(.*?)\](.*?)\[\/color\]^'$word )> 0){ 
        
$word=preg_replace('^\[color=(.*?)\](.*?)\[\/color\]^''<font color="\\1">\\2</font>'$word); 

return 
$word;

Si no, no "devuelve" un valor ;)
__________________
>> Eleazan's Source
>> @Eleazan
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 02:50.