按特殊字符分割并删除php和javascript数组中的空元素

按特殊字符分割并删除php和javascript数组中的空元素,php,Php,我有一个由数字合并的合并字符串,每个数字元素的开头和结尾都有&字符 实际字符串&1&&3&&5& 如果将6添加到此字符串,则最后一个字符串将是&1&&3&&5&&6& 问题是当我想在这个数组字符串中获取数字时,数组中有太多的空元素,我也不需要它们 当我拆分explode(',,actualstr)时,数组是[“1”,“3”,“3”,“5”,“6”]但是我需要这个[“1”,“3”,“5”,“6”] 我会这样做很多次,所以需要最有效的方法 在js中也有类似的情况,如果需要知道特殊的方法,如果没有,则

我有一个由数字合并的合并字符串,每个数字元素的开头和结尾都有
&
字符

实际字符串
&1&&3&&5&

如果将6添加到此字符串,则最后一个字符串将是
&1&&3&&5&&6&

问题是当我想在这个数组字符串中获取数字时,数组中有太多的空元素,我也不需要它们

当我拆分
explode(',,actualstr)
时,数组是
[“1”,“3”,“3”,“5”,“6”]
但是我需要这个
[“1”,“3”,“5”,“6”]

我会这样做很多次,所以需要最有效的方法


在js中也有类似的情况,如果需要知道特殊的方法,如果没有,则可以手动检查。

删除前导和尾随
&
,然后
通过双击
&
分解

$array = explode('&&',trim($str,'&'));
print_r($array);

Array
(
    [0] => 1
    [1] => 3
    [2] => 5
    [3] => 6
)

一个快速修复方法是使用正则表达式,但前提是您100%了解您正在使用的数据

preg_match_all("/[0-9]/", "&1&&3&&5&&6&", $numbers);
var_dump($numbers);

array(1) {
  [0]=>
  array(4) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "3"
    [2]=>
    string(1) "5"
    [3]=>
    string(1) "6"
  }
}
另一种方法是使用数组过滤器,如果“&”之间的数据不适合通过正则表达式进行过滤

array_filter(explode("&", "&1&&3&&5&&6&"))

我不知道如何提取这个字符串的数字,但如果您这样做,您可以得到一个数字数组:

preg_match_all('/&([0-9])&/','&1&&3&&5&',$matches);
var_dump($matches);
在JavaScript中,您可以执行类似于@AlexAndrei在PHP中所做的操作:

var str='&1&&3&&5&';
var result=str.substr(0,str.length-1).substr(1).split('&&');
控制台日志(结果)可以使用trim()函数删除空间字符或从字符串中删除空间字符

$str = "&1&&3&&5&&6&";
$str_clear = trim($str, '&');
$array = explode('&&',$str_clear);
print_r($array);

我想这就是你想要做的

$str = "&1&&3&&5&&6&";
$numArray = preg_split('/&/', $str, -1, PREG_SPLIT_NO_EMPTY);
print_r($numArray);