2013-02-22 92 views
0

我想刪除除最後一個之外的所有數字。如何刪除後面的所有數字並只保留最後一個

例子:

test test 1 1 1 255 255 test 7.log 

我想變換:

test test test 255 7.log 

我試過無數的組合,但我發現這個結果最好的是錯誤的:

test test 55 test 7.log 

我感謝大家爲我們提供的寶貴幫助e很棒。

+0

做一些谷歌之前詢問 – 2013-02-22 13:07:50

+0

請發佈到底你試過什麼代碼。如果我們只看到您的嘗試結果,我們無法幫助您。 – Cerbrus 2013-02-22 13:12:05

+1

如果你說你爲什麼試圖做到這一點,甚至可能會有更好的方法。 – Ollie 2013-02-22 13:16:47

回答

0

,如果你需要刪除所有數字,除了最後:

$file = "test test 1 1 1 255 255 test 7.log"; 
list($name, $ext) = explode('.', $file); 
// split the file into chunks 
$chunks = explode(' ', $name); 
$new_chunks = array(); 
// find all numeric positions 
foreach($chunks as $k => $v) { 
    if(is_numeric($v)) 
     $new_chunks[] = $k; 
} 
// remove the last position 
array_pop($new_chunks); 
// for any numeric position delete if from our list 
foreach($new_chunks as $k => $v) { 
     unset($chunks[$v]); 
} 
// merge the chunks again. 
$file = implode(' ', $chunks) . '.' .$ext; 
var_dump($file); 

輸出:

string(20) "test test test 7.log" 

如果你想,然後刪除所有dublicate號碼:

$file = "test test 1 1 1 255 255 test 7.log"; 
list($name, $ext) = explode('.', $file); 
$chunks = explode(' ', $name); 
$new_chunks = array(); 
$output = array(); 
foreach($chunks as $k => $v) { 
    if(is_numeric($v)){ 
     if(!in_array($v, $new_chunks)) { 
     $output[] = $v; 
     $new_chunks[] = $v; 
    }} else 
     $output[] = $v; 
} 
var_dump(implode(' ', $output). '.' .$ext); 

輸出:

string(26) "test test 1 255 test 7.log" 
相關問題