Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2008, 10:19
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 11 meses
Puntos: 292
Exclamación Problemas con explode (!)

Amigos: creia conocer la funcion explode() pero me lleve una sorpresa al ver que tiene un comportamiento extraño.

En una parte de un programa intento excluir una lista de palabras de un array.

La "exclusion" funciona perfectamente si el array de palabras[] lo armo "a mano" pero falla si lo genero mediante un explode de un array

Les dejo el codigo para que vean (y si pueden... ayuden)

Código PHP:
<?php

$str 
"Samsung se ha aliado con la firma de productos cosmeticos Nails Inc para lanzar una edicion especial de su telefono G600 que llevara el sobrenombre de Belle Las caracteristicas del terminal seran las mismas de la edicion normal mas el dispositivo sera de color purpura y se vendera con tres frascos de pintura de uñas incluyendo uno a juego con el color del celular El Samsung G600 Belle se vendera de forma exclusiva en la tienda britanica Phones4u";

$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");

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

// purgo de palabras vacias
For ($i=0;$i<count($palabras);++$i){
  If ( 
strlen($palabras[$i])==){
    
array_splice ($palabras,$i,1); // elimino elemento del array
  
}
}

//print_r ($palabras);

For ($i=0;$i<count($palabras);++$i){
  If (     
in_array($palabras[$i], $excluidas ) ){
    
array_splice ($palabras,$i,1); // elimino elemento del array
  
}
}

print_r ($palabras);
?>
NOTAR que si habilitan la linea siguiente, las palabras "ha", y "la" son excluidas corectamente

Código PHP:
$palabras = array ("samsung","ha","sido","la","empresa","lider"); 
EDIT: con split() tampoco funciona:

Código PHP:
Function explode2($substr$str){
  
$salida split('[ ]'$str);
return 
$salida
__________________
Salu2!

Última edición por Italico76; 27/03/2008 a las 10:30