在PHP中爆炸字符串

时间:2010-03-19 11:31:48

标签: php explode

如何爆炸此字符串'||25||34||73||94||116||128' 我需要一个像这样的数组

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

explode(“||”,$ array);没有为我工作我得到这个阵列

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

6 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分: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 :(得分: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
)

答案 3 :(得分:1)

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

答案 4 :(得分:0)

你可以这样做:

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

答案 5 :(得分:0)

除了已经提到的解决方案之外,您还可以在之后过滤掉空值:

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

如果你没有使用PHP 5.3或更高版本,使用anonymous function,这个例子使用了你需要替换的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");