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])==0 ){
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;