Tan*_*pha 5 php regex arrays split input
假设我有以下字符串:
5+6-5*3/2+4
我需要将字符串拆分为两个数组:第一个数组包含整数,第二个数组包含字符串中的运算符.
我已经使用过这个preg_split()功能了
preg_split("/[^0-9]+/", $str)
并已成功完成任务,但我被告知要使用explode()和implode()功能.我尝试使用它们,但现在我对如何使用它们获得所需的数组感到困惑.
这里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);
解决方案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);
| 归档时间: | 
 | 
| 查看次数: | 350 次 | 
| 最近记录: |