Foros del Web » Programando para Internet » PHP »

separar cadenas

Estas en el tema de separar cadenas en el foro de PHP en Foros del Web. como puedo separar una cadena, pero contando los caracteres que tiene. nombreapellidociudad que me muestre los 3 primeros caracteres, o sea: nom, y despues los ...
  #1 (permalink)  
Antiguo 06/03/2006, 10:21
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 12 años, 7 meses
Puntos: 0
separar cadenas

como puedo separar una cadena, pero contando los caracteres que tiene.

nombreapellidociudad

que me muestre los 3 primeros caracteres, o sea: nom, y despues los 4 siguientes y asi sucesivamente

como lo puedo hacer, por que intente con el explode pero solamente encuentra caracteres.
  #2 (permalink)  
Antiguo 06/03/2006, 10:31
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 13 años, 2 meses
Puntos: 0
http://www.php.net/manual/es/function.substr.php


la funcion que te sirve es substr.

Saludos
__________________
Liber
  #3 (permalink)  
Antiguo 06/03/2006, 10:36
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 12 años, 6 meses
Puntos: 0
Una función que separa cadenas dando una cadena origen y desde donde hasta donde pretendes cortar, es substr.
Lo que ocurre es que tienes que saber siempre desde donde hasta donde pretendes seccionar la cadena. Y no siempre se saben esos parámetros...

Mi consejo es que al crear la cadena la separares mediante un guión o una coma, algún caracter distintivo. De ese modo, cuando tengas que separarla, utilizas la función split de este modo:

Código PHP:
$cadena="nombre-primerapellido-segundoapellido";
$datos=split("-",$cadena);
$nombre=$datos[0];
$papellido=$datos[1];
$sapellido=$datos[2]; 
Ya me dirás qué prefieres....

Espero que te haya servido de algo

Un saludo
  #4 (permalink)  
Antiguo 06/03/2006, 10:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes un montón de funciones para trabajar con cadenas (strings) en PHP ..

Por ejemplo:

substr()
http://www.php.net/manual/en/function.substr.php

Combinado con un bucle for() podrías hacer lo que pretendes ...

Y también está:

str_split()
www.php.net/str_split

que te entrega un array de una cadena dada separada en grupos de N caracteres ... (creo que esto lo que buscas?)

más en:
http://www.php.net/manual/en/ref.strings.php

Un saludo,
  #5 (permalink)  
Antiguo 06/03/2006, 10:38
Avatar de sir_bowen  
Fecha de Ingreso: junio-2005
Mensajes: 184
Antigüedad: 12 años, 6 meses
Puntos: 0
Cuantas aportaciones....

Jejeje...

Saludos
  #6 (permalink)  
Antiguo 06/03/2006, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por sir_bowen
Cuantas aportaciones....

Jejeje...

Saludos
Jejej .. y si seguimos leyendo el manual oficial de PHP en el capítulo de "Cadenas" (strings) segúro que salen más alternativas .. hasta liarse con expresiones regulares (preg_math_all() ...) (que no viene al caso pues hay función más simple para hacer esto .. pero igual sería otra alternativa.)

Un saludo,
  #7 (permalink)  
Antiguo 06/03/2006, 12:50
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 12 años, 7 meses
Puntos: 0
Se les agradece las respuestas, ahora probare con las funciones dadas.
  #8 (permalink)  
Antiguo 06/03/2006, 13:13
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 12 años, 7 meses
Puntos: 0
revise pero ninguna me sirve, ya que necesito algo como

254878799656995

funcion que sirva para dividir

$dato[0]=2548;
$dato[1]=78799;
$dato[2]=656995;


no se si me entienden??
  #9 (permalink)  
Antiguo 06/03/2006, 13:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero que criterio sigues ahí? .. algún patrón dado? .. Esto no es lo mismo que expusistes antes de dividir una cadena a X caracteres fijos.

Un saludo,
  #10 (permalink)  
Antiguo 06/03/2006, 13:53
Avatar de aRTeX  
Fecha de Ingreso: mayo-2005
Mensajes: 374
Antigüedad: 12 años, 7 meses
Puntos: 0
tengo un archivo que es una linea completa de valores pero sin separacion alguna y lo que necesito es sacar algunos caracteres de cada linea en el archivo, en este caso el archivo viene sin formato.
  #11 (permalink)  
Antiguo 06/03/2006, 13:56
Avatar de rasmarko  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 15 años
Puntos: 1
Posiblemente esta sea la solución,

Código PHP:
<?


$numero 
'254878799656995';

// intval() para transformarlo a número

$dato[0] = intval(substr($numero,0,4));
$dato[1] = intval(substr(str_replace($dato[0],'',$numero),0,5));
$dato[2] = intval(substr(str_replace($dato[0].$dato[1],'',$numero),0,6));


echo 
'<pre>';
var_dump($dato);
echo 
'</pre>';


?>
También me fijé de algo al terminar de hacer ese código, que decías que lo intentaste con explode pero que solo lo hace con caracteres.

Quiero decirte que la manera más sencilla es agregarle comillas para hacer caracter el número y depués convertirlo a varlo númerico intval() como lo hice anteriormente. Con lo anterior que puse podrias elaborar una función sencilla que pueda utilizar un for() hey ahi métele la imaginación.

__________________
Fuentes - Diseweb - Frases Célebres
  #12 (permalink)  
Antiguo 06/03/2006, 13:57
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 15 años, 9 meses
Puntos: 771
Cita:
Iniciado por aRTeX
lo que necesito es sacar algunos caracteres de cada linea en el archivo
¿Cuantos caracteres? ¿Siempre el mismo número de caracteres? ¿Cada línea del archivo es un número que tienes que trocear?

Saludos,
  #13 (permalink)  
Antiguo 06/03/2006, 15:24
Avatar de rasmarko  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 78
Antigüedad: 15 años
Puntos: 1
Bueno hice una función un poco limitada pero que es exactamente lo que pides acerca del número 254878799656995 jaja

Ahí te va!

Código PHP:
<?

function separar($cadena,$limite=0,$veces=0) {

$datos = array();
for(
$i=1;$i<=$veces;$i++){
$sub str_replace($datos,'',$cadena);
$datos[$i] = intval(substr($sub,0,$limite));

$limite++;
}

return 
$datos;

}

$numero '254878799656995';
$separar separar($numero,4,3);

echo 
'<pre>';
echo 
var_dump($separar);
echo 
'</pre>';

//
// DEVOLVERÍA:
//
//array(3) {
//
//       [1]=>
//                  int(2548)
//        [2]=>
//                 int(78799)
//        [3]=>
//                 int(656995)
//
//     } 
//

?>
Espero que te pueda servir, en cuanto a la función es fácil utilizarla...

separar($numero,4,3);

El numero 4 es el numero de separación con la cual comenzará y desoués aumentará hasta 5, 6, 7,... (depende del tercer valor 3)

Asi que si analizamos el codigo, la funcion comenzará separando 4 caracteres, luego aumentara a 5 y luego a 6 y ahi se parará puesto que existe el número 3 (veces) en el tercer atributo.

Espero que te funcione.
__________________
Fuentes - Diseweb - Frases Célebres

Última edición por rasmarko; 06/03/2006 a las 17:19
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 16:43.