如何使用explode-implode函数将字符串拆分为两个数组?

Tan*_*pha 5 php regex arrays split input

假设我有以下字符串:

5+6-5*3/2+4
Run Code Online (Sandbox Code Playgroud)

我需要将字符串拆分为两个数组:第一个数组包含整数,第二个数组包含字符串中的运算符.

我已经使用过这个preg_split()功能了

preg_split("/[^0-9]+/", $str)
Run Code Online (Sandbox Code Playgroud)

并已成功完成任务,但我被告知要使用explode()implode()功能.我尝试使用它们,但现在我对如何使用它们获得所需的数组感到困惑.

Sah*_*ati 9

这里preg_match也可以帮到你.你也可以这样做preg_split.preg_match是一个更好的解决方案,如果你有这样的字符串,5+6-(5*3)/2+4那么preg_split结果也给你().这里我们array_map用于迭代和预防0,可能会被删除array_filter.

在此处尝试此代码段

解决方案1:使用preg_match

正则表达式: (\d+)|([+-\/\*])这将匹配一个或多个数字或任何算术符号.

<?php
ini_set('display_errors', 1);
$str = "5+6-5*3/2+4+0";
preg_match_all("/(\d+)|([+-\/\*])/", $str,$matches);

$digits=array();
array_map(function($value) use(&$digits){
    if($value!=="" && $value!==null && $value!==false)
    {
        $digits[]=$value;
    }
}, $matches[1]);

$symbols=array();
array_map(function($value) use(&$symbols){
    if($value!=="" && $value!==null && $value!==false)
    {
        $symbols[]=$value;
    }
}, $matches[2]);

print_r($digits);
print_r($symbols);
Run Code Online (Sandbox Code Playgroud)

在此处尝试此代码段

解决方案2: using preg_split

这里我们在数字(\d+)和符号上分割字符串[+-\/\*]

<?php

ini_set('display_errors', 1);
$str = "5+6-5*3/2+4+0";
$symbols=preg_split("/(\d+)/", $str);
$digits=preg_split("/([+-\/\*])/", $str);

$symbols=  array_filter($symbols);
print_r($digits);
print_r($symbols);
Run Code Online (Sandbox Code Playgroud)

  • @BunkerBoy是的我从两个网站上学到了这一点,并继续练习典型的问题.如果您想从这里开始学习基础知识,请访问https://regexone.com/,然后您可以访问https://regex101.com/ (2认同)