Bir giriş dizesi uzunluğu bazı değerinden az ise) (filter_var_array gibi PHP filtre fonksiyonlarını kullanarak kontrol etmek için bir yol var

2 Cevap php

I have been toying with PHP filter library. I liked it but I am unable to perform a simple filter function. I essentially want to invalidate those values in my input array that are strings and which are longer than certain value. Is there a way to do this like,

$data = array('input_string_array' => array('aaa', 'abaa', 'abaca'));
$args = array(
    'component'    => array('filter'    => FILTER_DEFAULT,
                            'flags'     => FILTER_REQUIRE_ARRAY, 
                            'options'   => array('min_length' => 1, 'max_length' => 10)
                           )
);

var_dump(filter_var_array($data, $args));

Bunu denedim ve onun bana hata veriyor. muhtemelen hiçbir min_length / max_length seçenek var çünkü. Ama sonra bu nasıl uygulamak? Ayrıca max_range, min_range, regexp gibi tüm bu seçenekler hakkında anlatılan bir yer vardır.

Ayrıca ben FILTER_CALLBACK filtre, filtreler, başka bir şüphe vardı. Ben denilen işlevi verileri başka bir parametre geçmek için bir yol olup olmadığını bilmek istedi? Böyle bir şey,

echo filter_var($string, FILTER_CALLBACK, array("options"=> array("lengthChecker", "5")));

Teşekkürler yardım için bir sürü.

2 Cevap

Daha iyi, daha doğrudan bir filtre + seçeneği olmadıkça kullanmak FILTER_VALIDATE_REGEXP olabilir

$data = array('input_string_array' => array('', 'aaa', 'abaa', 'abaca'));
$args = array(
  'input_string_array' => array(
    'filter' => FILTER_VALIDATE_REGEXP,
    'flags'     => FILTER_REQUIRE_ARRAY|FILTER_NULL_ON_FAILURE,
    'options'   => array('regexp'=>'/^.{1,3}$/')
  )
);
var_dump(filter_var_array($data, $args));

baskılar

array(1) {
  ["input_string_array"]=>
  array(4) {
    [0]=>
    NULL
    [1]=>
    string(3) "aaa"
    [2]=>
    NULL
    [3]=>
    NULL
  }
}

Eğer kullanabileceğiniz NULL unsurlardan kurtulmak için örneğin array_filter().

Ben orijinal sorun veri dizisindeki alan filtre dizideki biri olarak aynı adlı değil idi inanıyorum.