2009-10-30 3 views
3

나는 PHP를 사용하고 있으며 필터링해야하는 사용자 이미지 배열이 있습니다. 각 값 내 "나쁜 단어"배열 필터 값 배열

  • 찾는 값을 포함하고 원래 배열의 값 중 하나에 끝나는 경우 볼 경우 원래 배열의

    1. 봐 및 참조 : 나는 2 개 개의 다른 필터를 할 필요가

      Array 
      ( 
          [0] => smiles.gif 
          [1] => kittens.jpg 
          [2] => biscuits.png 
          [3] => butthead.jpg 
      ) 
      
      $bad_words = array('beavis','butthead','winehouse'); 
      $bad_extensions = array('.gif','.tiff'); 
      

      내가 그것을 반환하고 싶습니다 :

      ,369 "나쁜 확장"

    이미지 배열 값

    Array 
    ( 
        [0] => kittens.jpg 
        [1] => biscuits.png 
    ) 
    
  • +0

    의 중복 가능성 (http://stackoverflow.com/questions/1594113/filtering-array-values-in-php) –

    답변

    4
    $array = array("smiles.gif", "kittens.jpg", "biscuits.png", "butthead.jpg"); 
    
    $new_arr = array_filter($array, "filter"); 
    
    function filter($element) { 
        $bad_words = array('beavis','butthead','winehouse'); 
        $bad_extensions = array('gif','tiff'); 
    
        list($name, $extension) = explode(".", $element); 
        if(in_array($name, $bad_words)) 
         return; 
    
        if(in_array($extension, $bad_extensions)) 
         return; 
    
        return $element; 
    } 
    
    
    echo "<pre>"; 
    print_r($new_arr); 
    echo "</pre>"; 
    

    출력

    에서 몇 가지 편리한 참조입니다

    나는을 (를) 제거했습니다. 당신의 확장에서

    편집 상점 : [? PHP에서 필터링 배열 값] 추가 사악한 벼룩 보정

    +0

    기술적으로''{$ name}. {$ extension} ''대신에'$ element'를 반환 할 수 있습니다. –

    +0

    파일 이름이 .like.this.jpg이면 어떨까요? – alex

    +0

    또한'in_array()'는 그렇게 검색하지 않는다고 확신합니다. 문자열이 정확하게 일치하는지 확인합니다. – alex

    0

    당신은 내가 당신의 확장 목록에서 기간을 제거하는 것, 당신이 다음 원하는 필터링이 우선

    array_filter($array1, "custom_filter"); 
    
    1

    를 호출 만 수행하는 함수를 작성, PHP의 array_filter 기능을 사용할 수 있습니다. 코드가 더 어려워 질뿐입니다. 이 작업을 수행 한 경우 다음 코드 (테스트 안 함)가 작동해야하며, 최소한 시작해야합니다.

    $cleanArray = []; 
    
    foreach($array as $value) { 
    
        $extension = path_info($value, PATHINFO_EXTENSION); 
    
        if (in_array($extension, $bad_extensions)) { 
         continue; 
        } 
    
        foreach($bad_words as $word) { 
         if (strstr($word, $value)) { 
          continue 2; 
         } 
        } 
        $cleanArray[] = $value; 
    
    
    } 
    

    $ cleanArray는 원하는 값을 가져야합니다. 여기

    는 PHP 온라인 문서