2014-02-27 2 views
0

특정 부분 문자열에 대한 배열을 검색하고이를 포함하고있는 모든 키를 제거하려고합니다. 나는 몇 가지를 시도하고 내 PHP-FU가 ... 여기 (부분 만이 라인을 따라 많은)와일드 카드를 사용하여 PHP 배열에서 특정 키를 제거하십시오.

배열 내가 검색하고를 실행 다음과 같이이다 : 나는 제거하려고

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

"/"가 포함 된 모든 항목 및 "/ ..".

길고 짧다는 파일 형식으로 파일을 검색하기 위해 스크립트를 만들었고, 대신 모든 파일을 검색하고 같은 작업을 수행하는 기능을 추가하려고합니다.이 부분은 문자열 전체 또는 일부를 포함하는 항목.

답변

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]); 
} 
관련 문제