Foros del Web » Programando para Internet » PHP »

Funcion : Dividir cadena

Estas en el tema de Funcion : Dividir cadena en el foro de PHP en Foros del Web. Buenas! Estoy creando una función para dividir una cadena en palabras y así poder guardarlas en un array, pero no conssigo que funcione. A ver ...
  #1 (permalink)  
Antiguo 12/02/2006, 13:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 89
Antigüedad: 19 años, 10 meses
Puntos: 1
Pregunta Funcion : Dividir cadena

Buenas! Estoy creando una función para dividir una cadena en palabras y así poder guardarlas en un array, pero no conssigo que funcione. A ver si alguien le puede echar un vistazo y me dice dónde está el error.. Muchas gracias de antemano!
Código PHP:
function dividir($cadena){
$str $cadena;
$veces substr_count($str' ');  //numero de espacios
$coincidencias = array(); //array donde guardo las palabras
if ($veces == 0){  //si no hay espacios => solo una palabra ; la guardo
$coincidencias[0] = $str;
}else{
$v =1;
while (
$v<=$veces){ //recoorro  los espaciios y voy dividiendo..
if ($v ==  $veces){ //  si es el último espacio...
$posicion strpos($str' '$veces); //posicion espacio inicial
$longitud strlen($str); //longitud de la cadena
$lg $longitud $posicion//longitud palabra
$palabra substr($str,$posicion,$lg);
$coincidencias[$v] = $palabra;
}else{ 
//voy dividiendo
    
$pos strpos($str' '$v-1); //posicion espacio inicial
    
$ps strpos($str' '$v);//posicion espacio final
    
$longitud $ps -$pos// longitud
    
$palabra substr($str$pos$longitud);  //saco la palabra
    
$coincidencias[$v] = $palabra// la guardo
    
}
++
$v;    
}
}
return 
$coincidencias//devuelvo el array

  #2 (permalink)  
Antiguo 12/02/2006, 13:57
 
Fecha de Ingreso: enero-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 299
Antigüedad: 18 años, 3 meses
Puntos: 5
Como ejercicio está muy bien, pero si lo que querés es una función que te separe las palabras de una cadena en un array, no hace falta "reinventar la rueda": php ya trae dos, que te simplican todo el proceso: split y explode.

Un ejemplo de cómo funcionan:

Código:
<?php
$cadena = "esta es una cadena";
$arr_cadena = split(" ",$cadena);
$arr_cadena2 = explode(" ",$cadena);
print_r($arr_cadena);
print_r($arr_cadena2);
?>
Suerte
Califa
  #3 (permalink)  
Antiguo 30/05/2006, 09:22
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 17 años, 10 meses
Puntos: 0
Hola Experto:
Tengo el mismo problema y veo que das una buena solución pero como se accede o como se hace para saber la posición en que está cada espacio?. Mi inquietud va por lo siguiente: Tengo esta cadena "CL 100 N 48-52" como se puede apreciar, es una dirección y debo saber los numeros que hay mas o menos asi dependiendo de los espacios: El primer espacio, está en la posición 2, entonces debo tomar lo que hay desde el primer espacio (2) hasta la posición 0, osea en mi primera variable almaceno la cadena "CL". Ahora debo buscar una cadena asi " N " y saber en que posición está. En este caso, está en la 7. Ahora debo extraer lo que hay entre el primer espacio y lo que hay entre "N" osea el numero 100. Como ves, hay que saber la posición de cada espacio. No se como hacerlo. Debería ser algo como pos1=2, pos2=7, pos3=8 y asi sucesivamente para ir extrayendo el contenido que hay entre strsub(pos2-pos1). Espero me hayas entendido y me puedas ayudar.

Gracias

Cita:
Iniciado por califa010
Como ejercicio está muy bien, pero si lo que querés es una función que te separe las palabras de una cadena en un array, no hace falta "reinventar la rueda": php ya trae dos, que te simplican todo el proceso: split y explode.

Un ejemplo de cómo funcionan:

Código:
<?php
$cadena = "esta es una cadena";
$arr_cadena = split(" ",$cadena);
$arr_cadena2 = explode(" ",$cadena);
print_r($arr_cadena);
print_r($arr_cadena2);
?>
Suerte
Califa
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 09:38.