PHP - Separar cadena en varias, por un caracter en una determinada posicion

   
Vista:

Separar cadena en varias, por un caracter en una determinada posicion

Publicado por CIMO (2 intervenciones) el 06/10/2017 21:57:57
Hola a toda la comunidad

Alguien me puede apoyar en saber como separar una cadena en viarias dependiendo de un caracter en una determinada posición, voy a tomar un ejemplo que encontre en internet:

//Cadena
$str = 'uno|dos|uno|dos|uno|dos|uno|dos....';

//Lo que quiero es separar esta cadena cada X posiciones en este caso cada 2 posiciones del caracter "|"
//El resultado que quiero es:

0 --> 'uno|dos'
1--> 'uno|dos'
3--> 'uno|dos'
4--> 'uno|dos'
5--> ...etc.

Si alguien tiene alguna idea se lo agradecería mucho.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Separar cadena en varias, por un caracter en una determinada posicion

Publicado por Yamil Bracho (758 intervenciones) el 06/10/2017 23:05:07
Usa explode
1
2
3
4
5
6
7
8
9
$str = 'uno|dos|uno|dos|uno|dos|uno|dos....';
$arr = explode("|", $str)
$count = 0;
$porciones = array();
while ($count < len($arr)) {
  array_push($porciones, $arr[$count] . "|" . $arr[$count + 1];
  $count+=2;
}
print_r($porciones);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Separar cadena en varias, por un caracter en una determinada posicion

Publicado por CIMO (2 intervenciones) el 07/10/2017 00:47:00
Eso es exactamente lo que quería realizar, lo intentaba con explode pero no me quedaba, que bueno que me entendiste.

Gracias Yamil Bracho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip

Separar cadena en varias, por un caracter en una determinada posicion

Publicado por kip (863 intervenciones) el 07/10/2017 19:25:15
Hola, es posible hacerlo de otras formas tambien:

1
2
3
4
5
$str = 'uno|dos|uno|dos|uno|dos|uno|dos....';
$arrayStr = array_map(function($v) {
   return implode('|', $v);
}, array_chunk(explode('|', $str), 2));
print_r($arrayStr);

1
2
3
$str = 'uno|dos|uno|dos|uno|dos|uno|dos....';
preg_match_all('/(?:\w+\|\w+[^\|]+)/', $str, $arrayStr);
print_r($arrayStr[0]);

Ambos muestran:

1
2
3
4
5
6
7
Array
(
    [0] => uno|dos
    [1] => uno|dos
    [2] => uno|dos
    [3] => uno|dos....
)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Revisar política de publicidad