Как разбить строку после второго пробела в php / laravel? - PullRequest
1 голос
/ 21 января 2020
$string="112*1/25 5*112/20 456*8/20 2*569/20 156*3/40 9*789/20";

Я пытаюсь разбить строку после второго пробела. Как этого добиться? Я попытался использовать следующий подход.

    $my_array=preg_match('/^([^ ]+ +[^ ]+) +(.*)$/', '$string', $split);

Я получаю вывод как 1. Мой желаемый вывод должен выглядеть следующим образом

    $split=array([0]=>112*1/25 5*112/20 [1]=>456*8/20 2*569/20 [2]=>156*3/40 9*789/20);

Ответы [ 4 ]

2 голосов
/ 21 января 2020

Вы можете попробовать это:

$string="112*1/25 5*112/20 456*8/20 2*569/20 156*3/40 9*789/20";

$split = array_map(
    function($value) {
        return implode(' ', $value);
    },
    array_chunk(explode(' ', $string), 2)
);

var_dump($split);
1 голос
/ 21 января 2020
<?php 

        $string="112*1/25 5*112/20 456*8/20 2*569/20 156*3/40 9*789/20";
       $array1=(explode(" ", $string));
       $new_array=array_chunk($array1, 2);
       $n=count($new_array);
       for ($i=0; $i < $n ; $i++) { 
           $str_arr[] = implode(" ", $new_array[$i]);
        }



    print_r($str_arr);
    ?>
1 голос
/ 21 января 2020

Вы можете использовать preg_match_all .

$string="112*1/25 5*112/20 456*8/20 2*569/20 156*3/40 9*789/20";

$r = preg_match_all('~[^ ]+ [^ ]+~',$string, $match);

echo '<pre>';
var_dump($match[0]);

Выход:

array(3) {
  [0]=>
  string(17) "112*1/25 5*112/20"
  [1]=>
  string(17) "456*8/20 2*569/20"
  [2]=>
  string(17) "156*3/40 9*789/20"
}
1 голос
/ 21 января 2020

Вы можете попробовать это

$string="112*1/25 5*112/20 456*8/20 2*569/20 156*3/40 9*789/20";
$arr = array_chunk(explode(' ',$string),2);
$res = array_map(function($v){ return implode(' ',$v);}, $arr);

Рабочий пример: - https://3v4l.org/FLTom

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...