2016-05-15 16 views
0

I Zahlen wie folgt aus einem String zu trennen versuchen: -4-25-30 mit phpPHP Zahlen von String in ein Array zu trennen

Ich habe versucht, folgende Dinge:

$fltr = array(); 
for($i=0;$i<count($q);$i++) { 
    $odr = $q[$i]['odr']; 
    $fltr = preg_match_all('/([a-z0-9_#-]{4,})/i', $odr, $matches); 
} 

dieser hier gibt einen Ausgang: 1

und die Funktion explodiert:

$fltr = array();   
for($i=0;$i<count($q);$i++){ 
    $odr = $q[$i]['odr']; 
    $fltr = explode($odr, '-'); 
} 

Hinweis: $odr enthält die Zeichenfolge.

dies gibt einen O/P: „-“

ich alle Zahlen aus der Zeichenfolge holen will.

+1

Sie können dies mit '('explodieren - ', trim (' - 4-25-30 ',' - ')) '. –

Antwort

2

Versuchen Sie, diese

$fltr = explode('-', trim($odr, '-')); 

Ich glaube, Sie das Trennzeichen mit dem eigentlichen String verwechselt, wenn explode() verwenden.

0

Wie ich kommentiere, wenn Sie alle Zahl von der Zeichenfolge trennen möchten, dann müssen Sie explode Funktion von PHP verwenden. Außerdem müssen Sie trim verwenden, um die zusätzliche - aus der Zeichenfolge zu entfernen.

$arr = explode('-', trim('-4-25-30', '-')); 
print_r($arr); //Array ([0] => 4 [1] => 25 [2] => 30) 

Sie können auch auf diese Weise tun,

$arr = array_filter(explode('-', '-4-25-30')); 
print_r($arr); //Array ([0] => 4 [1] => 25 [2] => 30) 
0
<?php 
$odr="-4-25-30"; 
$str_array=explode("-",trim($odr,"-")); 
foreach ($str_array as $value){ 
printf("%d\n",$value); 
} 
?> 

sollte bekommen, was Sie suchen

0

Ich habe versucht, mit einigen Korrekturen von oben alle Beispiele kombinieren

<?php 
$q = array(array('odr' => '-4-25-30'),); 

$fltr = array(); 
for ($i = 0; $i < count($q); $i++) 
{ 
    $odr = $q[$i]['odr']; 
    $fltr = preg_match_all('/(\d+)/i', $odr, $matches); // find 1 or more digits together 
} 

echo "attempt 1: \n"; 
echo "count: "; 
var_export($fltr); // count of items 
echo "\nmatches: "; 
var_export($matches[0]); // array contains twice the same 
echo "\n"; 

$fltr = array(); 
for ($i = 0; $i < count($q); $i++) 
{ 
    $odr = $q[$i]['odr']; 
    $trim = trim($odr, '-'); // 2nd param is character to be trimed 

    $fltr = explode('-', $trim); // 1st param is separator 
} 

echo "attempt 2, explode: "; 
var_export($fltr); 
echo "\n"; 

Ausg t:

attempt 1: 
count: 3 
matches: array (
    0 => '4', 
    1 => '25', 
    2 => '30', 
) 
attempt 2: array (
    0 => '4', 
    1 => '25', 
    2 => '30', 
) 
0

Um das benötigte Ergebnis mit preg_match_all Funktion erreichen Sie über folgenden Ansatz gehen kann:

$odr = "-4-25-30"; 
preg_match_all('/[0-9]+?\b/', $odr, $matches); 

print_r($matches[0]); 

Der Ausgang:

Array 
(
    [0] => 4 
    [1] => 25 
    [2] => 30 
)