Foros del Web » Programando para Internet » PHP »

Funcion str_replace

Estas en el tema de Funcion str_replace en el foro de PHP en Foros del Web. Hola a todos este es mi primer post y la verdad es que después de mucho leer en google, y no encontrar me decidí por ...
  #1 (permalink)  
Antiguo 26/06/2009, 16:20
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Funcion str_replace

Hola a todos este es mi primer post y la verdad es que después de mucho leer en google, y no encontrar me decidí por pedir ayuda.

Este es mi código es sencillo ya que lo programe yo y aprende de leer manuales:

Código PHP:
<?

$var 
"Apple declaró el día 22 que la venta del iPhone de la nueva generación ha superado un millón de unidades en los primeros 3 día de su venta de estreno.
El celular de la nueva generación de Apple, que lleva el nombre de iPhone 3 GS, fue puesto en venta el día 19 simultáneamente en Estados Unidos y otros 7 países.
El iPhone de edición 3G también logró el éxito de ser vendido más de un millón de unidades en los primeros 3 día de su venta de estreno. Pero, ésta se efectuó simultáneamente en más de 20 países y regiones.
En una declaración del mismo día, Steve Jobs, CEO de Apple, dijo que la nueva cifra de venta muestra que los consumidores están haciendo su elección y que iPhone está llegando a ser el ganador."
;

$var1 = array (
        
' iphone ',
        
' apple ',
    );
$var2 = array (
        
' celular iphone ',
        
' empresa apple ',
    );

$var str_ireplace($var1$var2$var);

?>
Remplaza la palabra iphone por celular iphone, y la palabra apple por empresa apple.
Lo que quiero hacer ahora es que remplace iphone por “telefono iphone”, y si aparece de nuevo por “mobil iphone” y si aprece denuevo por “celular iphone”.

Alguien tiene alguna idea.

Gracias

Última edición por xander85; 26/06/2009 a las 17:53
  #2 (permalink)  
Antiguo 26/06/2009, 16:58
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Funcion str_replace

str_ireplace()

El problema es que tienes mayusculas en el texto y no las estas considerando en la busqueda, puedes usar str_ireplace, que no hace diferencia entre mayusculas y minusculas.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 26/06/2009, 17:55
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Gracias por la pronta respuesta tienes razón cometí un error al reescribir el código.
creo que para hacer lo que quiero primero debería contar la cantidad de veces que aparece la palabra y luego desde un array cambiar de forma diferente cada repetición

Creo que me exprese mal y no se entiende lo que quiero lograr: Tengo en una variable un texto donde aparece varias veces la misma palabra o frase repetida.
El script remplazar todas las repeticiones de la palabra iphone por movil iphone.

Lo que quiero hacer ahora es que cada ves que aparezca la palabra en cuestión la remplace desde una lista, la lista tiene el formato:

iphone | móvil iphone | teléfono iphone | celular iphone | iphone
auto | automóvil | vehículo
...


con explode convierto la fila en array pongamos de nombre $lista
$lista[0] seria la palabra que quiero remplazar
$lista[1] $lista[2] $lista[3] ...
Son los posible remplazos

No se como remplazar por ejemplo la palabra iphone por móvil iphone y si se repite nuevamente en el texto remplazarla por teléfono iphone y se de vuelve a repetir por celular iphone y así sucesivamente.

Espero que ahora este mas claro pero por las dudas así quedaría el texto.

Cita:
Apple declaró el día 22 que la venta del móvil iPhone de la nueva generación ha superado un millón de unidades en los primeros 3 día de su venta de estreno.

El celular de la nueva generación de Apple, que lleva el nombre de teléfono iPhone 3 GS, fue puesto en venta el día 19 simultáneamente en Estados Unidos y otros 7 países.

El celular iPhone de edición 3G también logró el éxito de ser vendido más de un millón de unidades en los primeros 3 día de su venta de estreno. Pero, ésta se efectuó simultáneamente en más de 20 países y regiones.

En una declaración del mismo día, Steve Jobs, CEO de Apple, dijo que la nueva cifra de venta muestra que los consumidores están haciendo su elección y que iPhone está llegando a ser el ganador.

Gracias

nadie me ayuda o es que no se entiende

Última edición por GatorV; 29/06/2009 a las 22:24
  #4 (permalink)  
Antiguo 29/06/2009, 21:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

Cita:
Tengo en una variable un texto donde aparece varias veces la misma palabra o frase repetida.
El script remplazar todas las repeticiones de la palabra iphone por movil iphone.
Deberias chequear...... cuantas veces aparece esa palabra porque si aparece 3 vece y tienes solo 1 opcion....siempre habra repetidos.

Una forma de hacer esto.....es armar un array donde cargas todas las palabras que aparecen y luego lo ordenas por frecuencia de aparicion: asi... revisas el array mientras haya repetidos (mas de 2 apariciones de esa palabra).....y haces los reemplazos pertinentes

Dejas de procesar el array cuando empiezan a aparecer palabras 1 sola vez.

Hace un tiempo.....como parte de algo mas grande...hice una funcion que podrias investigar:

Código PHP:
Function densidades($str){

// unifico
$str strtolower($str);

// Limipio de caracteres indeseables
$nostr = array("." ,"'" ,";" ,"!" ,"?" ,chr(34));
For (
$i=0;$i<count($nostr);++$i){
  
$str str_replace ($nostr[$i]," ",$str);
}
////////////////////////////////

$palabras = array();

$str strtolower($str);

$excluidas = array("la","lo","las","los","a""ante""bajo""cabe""con""contra""de""del""desde""durante""en""entre""hacia""hasta""mediante""para""por""pro""segun""sin""so""sobre""tras""versus""via","yo","tu","el","ella","nosotros","vosotros""ellos""hacer","que","cuando","como","porque","un","una","uno","dos","tres","es","son","se","su","sus","ha","han","y","o","este","aquel","aquello","aquella","ese","esa","esos","menos","asi","no","si","tanto","subir","bajar","nos","vamos","voy","tener");

$palabras explode (" ",$str); // puede haber repetidas
//$palabras = array ("samsung","ha","sido","la","empresa","lider");

// purgo de palabras vacias
$total count($palabras);
for(
$i=0$i $total ; ++$i){
  if ( 
strlen($palabras[$i])==){
    
//unset( $palabras[$i] );
    
array_splice ($palabras,$i,1); // elimino elemento del array 
  
}
}

//var_dump($palabras);


$total count($palabras);
for(
$i=0$i $total ; ++$i){
  if ( 
in_array(strtolower($palabras[$i]), $excluidas ) ){
     
array_splice ($palabras,$i,1); // elimino elemento del array 
  
}
}


$palabras_no_rep = array();
$pesos = array();

$total count($palabras);
for(
$i=0$i $total ; ++$i){
  If ( !
in_array($palabras[$i],$palabras_no_rep)){      
       
$palabras_no_rep[count($palabras_no_rep)]= $palabras[$i];
       
$pesos[$palabras[$i]]=1;
    }else{
       ++
$pesos[$palabras[$i]];
    }  
}

/*
for($i=0; $i < $total ; ++$i){
 echo $palabras_no_rep[$i]."  ".$pesos[$palabras_no_rep[$i]]."<br/>";
}
*/

array_multisort($pesos,$palabras_no_rep); // array ordena array (array ordenador)

$matriz array_combine($palabras_no_rep,$pesos); // unifico en una matriz para devolver en funcion
return ($matriz);

Enviale una cadena a esa funcion...y fijate la salida que genera
Suerte!
__________________
Salu2!
  #5 (permalink)  
Antiguo 30/06/2009, 12:24
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion str_replace

Gracias tu codigo es de ayuda pero tidabia no se como remplazar palabras o fraces repetidas por otras en base a una lista. si no se entiende lo que digo pregunten.
  #6 (permalink)  
Antiguo 30/06/2009, 15:28
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

Yo te entiendo.....pero no puedo ayudarte mas por ahora (si es que te ayudé en algo)
__________________
Salu2!
  #7 (permalink)  
Antiguo 13/07/2009, 09:50
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

XANDER85: dime si has solucionado porque he escrito algo que hace exactamente lo que estabas buscando.
__________________
Salu2!
  #8 (permalink)  
Antiguo 21/07/2009, 13:05
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion str_replace

tengo una solucion parcial hago explode por la palabra que nesesito y luego reuno los pedasos poniendo los remplazos en el medio, a vos que se te ocurrio

Gracias
  #9 (permalink)  
Antiguo 21/07/2009, 14:37
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

Hola... hice algo parecido pero donde me aseguro de estar reemplazando una palabra por otra y no un pedazo por una palabra. Ej: no confundo 'mente' con 'duramente'

Ademas garantizo no tocar los tags de HTML si se le proporciona HTML a la "funcion" (lo hice con objetos) de reemplazo.

Cada palabra admite infinitos sinonimos......y se toma uno al azar para hacer los reemplazos.

Aca el thread

Quizas no te aporte mucho ahora....me alegro hayas podido solucionar
__________________
Salu2!
  #10 (permalink)  
Antiguo 04/08/2009, 07:10
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Funcion str_replace

estoy usando la funcion densidades que pusiste en este post esta muy buena pero no logro usar los datos:
le cambie el orden. si uso echo $matriz me muestra solo nuemeros 111111111111111123334455555 sin las palabras correspondientes si uso print_r me da
Código:
Array ( [picopolo] => 4 [cada] => 2 [completo] => 2 [geográficas] => 2 [las] => 2 [otras] => 2 [podemos] => 2 [puede] => 2 [también] => 2 [te] => 2 [] => 1 [agradecerás] => 1 [al] => 1 [algunas] => 1 [así] => 1 [aunque] => 1 [ayudar] => 1 [ayudándonos] => 1 [brinda] => 1 [básica] => 1 [comprobar] => 1 [conseguir] => 1 [conservar] => 1 [coordenadas] => 1 [crear] => 1 [datos] => 1 [dentro] => 1 [detalle] => 1 [dicho] => 1 [diversas] => 1 [donde] => 1 [edición] => 1 [ello] => 1 [enormemente] => 1 [es] => 1 [esto] => 1 [estos] => 1 [foto] => 1 [fotografía] => 1 [fotografías] => 1 [fotográfica] => 1 [fotos] => 1 [frecuentemente] => 1 [galerías] => 1 [geolocalización] => 1 [geoposicionar] => 1 [gps] => 1 [gusta] => 1 [hayas] => 1 [herramienta] => 1 [incluso] => 1 [insertar] => 1 [integradas] => 1 [introduciendo] => 1 [localizaciones] => 1 [lugar] => 1 [mano] => 1 [mapamundi] => 1 [mapas] => 1 [marcar] => 1 [mayor] => 1 [menor] => 1 [mismo] => 1 [muy] => 1 [nivel] => 1 [ofrece] => 1 [operaciones] => 1 [otros] => 1 [palabras] => 1 [partir] => 1 [país] => 1 [países] => 1 [personalizados] => 1 [podrás] => 1 [posibilidades] => 1 [potentísima] => 1 [presenta] => 1 [presentaciones] => 1 [principal] => 1 [programa] => 1 [propósito] => 1 [puedes] => 1 [que] => 1 [realizar] => 1 [recuerdos] => 1 [regiones] => 1 [retoque] => 1 [seguro] => 1 [ser] => 1 [situaciones] => 1 [tamaño] => 1 [terminado] => 1 [tomó] => 1 [tu] => 1 [un] => 1 [usuario] => 1 [utilidad] => 1 [utilidades] => 1 [versátil] => 1 [viajas] => 1 [viajes] => 1 )
no se me ocurre como tomar el primer valor o el segundo o el tercer.

GRacias
  #11 (permalink)  
Antiguo 04/08/2009, 07:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

El arreglo lo podes recorrer con un foreach asi...

foreach ($arreglo as $palabra => $peso){
echo "La palabra '$palabra' aparece $peso veces<br/?>";
}

Queres saber cual es la palabra mas frecuente ?

Si queres saber cual es la palabra mas frecuente para picar esa podrias intercambiar el indice del array (la palabra) con su contenido -para esto hay una funcion en PHP-

Otra forma, quizas mas simple seria cuando tenes la o las palabras mas frecuentes... abortar el foreach con un break;

Buscas saber cuantas veces aparece una palabra en particular ?

Si buscas una palabra... podes usar in_array()

Estoy medio olvidado.....pero fijate con esas pistas... el array es asociativo por eso para acceder a un elemento tenes que saber la el indice o clave o sea la palabra en cuestion
__________________
Salu2!
  #12 (permalink)  
Antiguo 04/08/2009, 11:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Funcion str_replace

PROBA ESTO:

<?php
$array = array(
'picopolo' => 4,
'cada' => 2,
'completo' => 2,
'geográficas' => 1);

echo key($array).'<br/>'; // 'picopolo' -> la palabra mas frecuente
next($array);
echo key($array).'<br/>'; // 'cada'
?>

Obviamente podrias recorrerlo con un FOR hasta count($arreglo) o con FOREACH, etc
__________________
Salu2!
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 10:46.