Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/06/2009, 21:00
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
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!