2016-05-15 48 views
0

我想從這樣的字符串分隔的數字: -4-25-30用PHPPHP分離串號到數組

我曾嘗試以下操作:

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

這一個給出了一個輸出:1

和爆炸功能:

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

說明:$odr包含字符串。

這一項給出了一個O/P:「 - 」

我想獲取所有字符串中的數字。

+1

這可以使用'爆炸('呢 - ',trim(' - 4-25-30',' - '))'。 –

回答

2

試試這個

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

我想你使用explode()時夾雜了實際字符串分隔符。

0

正如我評論,如果你想從字符串中分離出所有數字,那麼你需要使用函數PHP。您還需要使用trim從字符串中刪除多餘的-

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

你也可以做到這一點的方式,

$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); 
} 
?> 

應該讓你在找什麼

0

我試過所有的例子從上面的一些修復相結合

<?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"; 

Outpu T:

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

爲了實現與preg_match_all功能,您可以通過下面的方法去所需要的結果:

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

print_r($matches[0]); 

輸出:

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