2009-11-25 17 views
11

Me gustaría obtener una cadena, por ejemplo 'sdasdasdsdkjsdkdjbskdbvksdbfksjdbfkdbfksdjbf' y dividirla cada seis caracteres.División de cadena en partes iguales usando PHP

No creo que explotar o strtok funcionará para eso?

¿Alguna idea?

+0

Tal vez deba especificar qué tipo de resultado desea. ¿Una matriz? –

+0

¡Gracias a todos los demás que respondieron también! –

Respuesta

28

str_split fue diseñado para eso.

$str = "sdasdasdsdkjsdkdjbskdbvksdbfksjdbfkdbfksdjbf"; 
$parts = str_split($str, 6); 
print_r($parts); 
+0

Brillante, gracias Marek! –

3

¿Quieres chunk_split()

+0

No estoy seguro de que comprenda qué hace 'chunk_split()'. * NO divide la cadena en más cuerdas *, solo divide la cadena dentro de sí mismo añadiendo sobre todo finales de línea después de cada * fragmento *, se usa para una funcionalidad de "longitud de línea máxima" (por ejemplo, el cuerpo del correo electrónico) :) –

0
$str = 'abcdefghijklmnopqrstuvwxyz'; 
$i = 0; $len = 6; $bits = array(); 
while($i < strlen($str)) { 
    $bits[] = substr($str, $i, $len); 
    $i += $len; 
} 

Editar: o utilizar str_split como se sugiere (php tiene demasiadas funciones incorporadas en FFS!)

+2

Y la gente está muy feliz de reinventar la rueda :) –

+1

Pero la rueda es una herramienta extremadamente útil con la que sería difícil vivir sin ella. Me pregunto cuánto cuestan estos miles de funciones raramente utilizadas. Me encontré con la función date_sunrise() en el manual del otro día, ¡vamos, eso es ridículo! – Rob

+1

Porque 6 líneas de código PHP denso son menos sobrecarga que una sola función que ocupa solo unos pocos bytes en forma compilada ...? :) Claro, no tiene sentido incluir una función para ** todo **, pero ambos 'str_split' y' date_sunrise' son lo suficientemente complejos para justificarlo, y (aparentemente) se usan de vez en cuando . 'date_sunrise' tal vez no tan a menudo, pero cuando lo necesites, estarás agradecido de que alguien ya haya hecho el trabajo. – deceze

1
No

la manera más limpia, pero funciona.

<?php 
$MyString = 'asdfasdlkfjasdlkfjasdlkfjasldkfj'; 
$MyNewString; 
$n = 6; // How many you want before seperation 
$MyNewString = substr($MyString,0,$n); 
$i = $n; 
while ($i < strlen($MyString)) { 
     $MyNewString .= '-'; // Seperator Character 
     $MyNewString .= substr($MyString,$i,$n); 
     $i = $i + $n; 
} 
echo $MyNewString 
?>