2014-02-27 88 views
0

我正在嘗試搜索特定部分字符串的數組並刪除所有包含它們的鍵。我已經試過幾件事情,我的PHP-FU在這裏不多了......從通配符中刪除php數組中的特定鍵

數組我正在尋找(部分,但沿着這些線路多)是這樣的:

Array 
(
    [0] => /. 
    [1] => /.. 
    [2] => /htdocs 
    [3] => /htdocs/. 
    [4] => /htdocs/.. 
    [5] => /htdocs/zipper_new.php 
    [6] => /htdocs/bottom.gif 
) 

我試圖刪除所有包含「/」的條目和「/ ..」。

它的長短是我做了一個腳本來搜索文件的文件類型和tar他們,我想添加功能,而不是搜索所有的文件,並做同樣的事情,這部分是失敗援引包含整個或部分字符串的條目。

回答

1
$data = array(
    '/.', 
    '/..', 
    '/htdocs', 
    '/htdocs/.', 
    '/htdocs/..', 
    '/htdocs/zipper_new.php', 
    '/htdocs/bottom.gif', 
); 

$match = '/.'; 

$newData = array_filter(
    $data, 
    function($value) use ($match) { 
     return (!fnmatch('*' . $match . '*', $value)); 
    } 
); 

var_dump($newData); 
+0

我曾試圖array_filter(),但看來我絕對沒有使用正確的方式:)感謝這麼多! –

0

你不能簡單地用一個foreach循環,尋找你的串像strstr的功能?

然後,使用unset刪除條目。

foreach ($table as $key => $item) { 
    if (strstr($item, '/.')) // If it contains /. it will also match for /.. 
     unset($table[$key]); 
}