2010-03-19 5 views
3

Comment puis-je exploser cette chaîne '||25||34||73||94||116||128' je dois avoir un tableau comme celui-ciExploding une chaîne en PHP

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

explode ("||", $ array); travail na pas pour moi-je obtenir ce tableau

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

Répondre

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

Merci cela a fonctionné pour moi – streetparade

0

Vous pouvez faire:

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

Une solution, en particulier si vous pouvez avoir des valeurs vides au milieu de la chaîne, pourrait être à utiliser preg_split et son drapeau PREG_SPLIT_NO_EMPTY:

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

vous donnera:

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) 


Si vous n'avez valeurs vides au milieu de la chaîne, bien que, en utilisant explode sera plus rapide, même si vous devez retirer le || à le début et la fin de la chaîne avant de l'appeler.

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

sortie

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

Et s'il y a une valeur '0'? – Gumbo

0

Outre les solutions déjà mentionnées, vous pouvez également filtrer les valeurs vides après:

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

Cet exemple utilise un anonymous function que vous devrez remplacer si vous n'utilisez pas PHP 5.3 ou supérieur, soit en utilisant create_function:

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

ou avec une fonction prédéfinie:

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

Depuis one of your previous questions était comment stocker et mettre à jour une telle chaîne dans MySQL ... supposons un instant de vos tâches futures sera de savoir si un certaine valeur est dans ce tableau/chaîne ou pour trouver/compter tous les enregistrements qui ont une certaine valeur dans ce tableau.
Dans ce cas, pourrait vouloir commencer normalizing your table maintenant.