Php 将字符串分解为代码

Php 将字符串分解为代码,php,arrays,Php,Arrays,我有一个数组的格式 array( [0]=>x_4556v_7889; [1]=>y_9908; [2]=>f_5643u_7865; ) 我需要得到输出作为 array( [0]=> ([0] =>4556; [1] =>7889; ) [1]=>( [0]=>9908;)

我有一个数组的格式

array(
      [0]=>x_4556v_7889;
      [1]=>y_9908;
      [2]=>f_5643u_7865;
   )
我需要得到输出作为

   array(
          [0]=> ([0] =>4556;
                 [1] =>7889;
                )
          [1]=>( [0]=>9908;)
          [2] =>([0] =>5643;
                 [1]=>7865;
                )

     )
如何使用strpos并找出字符串中“uz”(下划线)的出现情况,并在for循环中获取接下来的四个字符。
我只得到前四位代码,下一个四位代码没有。请提供一些逻辑。

看起来您正在尝试查找所有数字。在这种情况下,考虑一下这个问题:

$output = array_map(function($item) {
    preg_match_all("/\d+/",$item,$m);
    return $m[0];
},$input);
应该可以正常工作:)

不过这是一个不需要正则表达式的解决方案。。

没有使用preg\u match\u all的任何其他想法。无论如何,感谢您的支持suggest@SSS,为什么不
preg\u match\u all()
?这是正确的做法。Niet+1尝试自己写一些东西,如果不起作用,请具体告诉我们您做了什么,以便我们可以帮助您。你先开始,然后我们来帮忙。我们不是为你写的。向我们展示您尝试过的实际代码,然后描述发生了什么和什么不正确,然后我们可以从那里帮助您。如果你先亲自尝试,你很可能会非常接近答案。
$arr = array(
    0=>'x_4556v_7889;',
    1=>'y_9908;',
    2=>'f_5643u_7865;'
   );

$lettersarr = range('a','z');
array_unshift($lettersarr,'_');
array_unshift($lettersarr,';');

$new_arr=array_map(function ($v) use($lettersarr) {
    return explode('@',wordwrap(str_replace($lettersarr,'',$v), 4, "@", true)); },$arr);
print_r($new_arr);