2010-03-19 163 views
3

我如何爆炸的这串'||25||34||73||94||116||128' 我需要有这样的爆炸字符串在PHP

array (
0 => '25', 
1 => '34', 
2 => '73', 
3 => '94', 
4 => '116', 
5 => '128' 
) 

一个阵列爆炸(“||”,$阵列);我没有工作,我得到这个数组

array (
0 => '', 
1 => '25', 
2 => '34', 
3 => '73', 
4 => '94', 
5 => '116', 
6 => '128', 
) 

回答

12
$array = explode('||', trim($string, '|')); 
+0

感谢这对我有用 – streetparade 2010-03-19 12:00:30

0

你可以这样做:

explode('||',substr($str,2)); 
5

解决办法,尤其是如果你能在串中间有空值,可能是使用preg_split及其PREG_SPLIT_NO_EMPTY标志

$str = '||25||34||73||94||116||128'; 
$array = preg_split('/\|\|/', $str, -1, PREG_SPLIT_NO_EMPTY); 
var_dump($array); 

会给你:

array 
    0 => string '25' (length=2) 
    1 => string '34' (length=2) 
    2 => string '73' (length=2) 
    3 => string '94' (length=2) 
    4 => string '116' (length=3) 
    5 => string '128' (length=3) 


如果你再也不用在字符串中间空值,不过,使用explode会更快,即使你删除||在调用它之前的字符串的开始和结束。

2
$str='||25||34||73||94||116||128'; 
$s = array_filter(explode("||",$str),is_numeric); 
print_r($s); 

输出

$ php test.php 
Array 
(
    [1] => 25 
    [2] => 34 
    [3] => 73 
    [4] => 94 
    [5] => 116 
    [6] => 128 
) 
+0

如果值为'0'会怎么样? – Gumbo 2010-03-19 11:49:44

0

除了已经提到的解决方案,你也可以过滤掉空值算账:

$arr = array_filter(explode("||", $str), function($val) { return trim($val) === ""; }); 

此示例使用anonymous function,你将需要更换,如果你没有使用PHP 5.3或更高版本,使用create_function

$arr = array_filter(explode("||", $str), create_function('$val', 'return trim($val) === "";')); 

或者预定义的功能:

function isEmptyString($str) { 
    return trim($str) === ""; 
} 
$arr = array_filter(explode("||", $str), "isEmptyString"); 
1

由于one of your previous questions是如何存储和在MySQL更新这样的字符串...让我们假设此时的你未来的任务之一是,如果要找出某些值在此数组/字符串中,或​​者查找/计算在此数组中具有特定值的所有记录。
在这种情况下,您可能现在想开始normalizing your table