Найдите массив и удалите запись, если она не содержит AZ или AZ с тире - PullRequest
2 голосов
/ 13 июня 2011

У меня есть следующий массив:

Array
(
    [0] => text
    [1] => texture
    [2] => beans
    [3] => 
)

Я хочу избавиться от записей, которые не содержат az или az с тире.В этом случае элемент массива 3 (содержит только пробел).

Как бы я это сделал?

Ответы [ 4 ]

5 голосов
/ 13 июня 2011

Попробуйте с:

$input = array( /* your data */ );

function azFilter($var){
    return preg_match('/^[a-z-]+$/i', $var);
}
$output = array_filter($input, 'azFilter');

Также в PHP 5.3 есть возможность упростить это:

$input = array( /* your data */ );

$output = array_filter($input, function($var){
    return preg_match('/^[a-z-]+$/i', $var);
});
1 голос
/ 13 июня 2011

Попробуйте:

<?php
    $arr = array(
        'abc',
        'testing-string',
        'testing another',
        'sdas 213',
        '2323'
    );

    $tmpArr = array();
    foreach($arr as $str){
        if(preg_match("/^([-a-z])+$/i", $str)){
            $tmpArr[] = $str;
        }
    }
    $arr = $tmpArr;
?>

Вывод:

array
  0 => string 'abc' (length=3)
  1 => string 'testing-string' (length=14)
1 голос
/ 13 июня 2011

Для данных, которые вы указали в своем вопросе, используйте функцию array_filter() с пустым параметром обратного вызова.Это отфильтрует все пустые элементы.

$array = array( ... );
$array = array_filter($array);

Если вам нужно отфильтровать элементы, которые вы описали в тексте вашего вопроса, то вам нужно добавить функцию обратного вызова, которая будет возвращать true (действительный) или false (недействительно) в зависимости от того, что вам нужно.Для этого вам могут пригодиться функции ctype_alpha.

$array = array( ... );
$array = array_filter($array, 'ctype_alpha');

Если вам также нужно разрешить тире, вам необходимо предоставить собственную функцию в качестве обратного вызова:

$array = array( ... );
$array = array_filter($array, function($test) {return preg_match('(^[a-zA-Z-]+$)', $test);});

В этом примере функции обратного вызова используется функция preg_match() с использованием регулярного выражения.Регулярные выражения могут быть сформулированы для представления определенной группы символов, например, здесь a-z, A-Z и тире - (знак минус) в примере.

0 голосов
/ 13 июня 2011

Хорошо, просто вы можете зацикливаться через массив. Создайте регулярное выражение, чтобы проверить, соответствует ли оно вашим критериям. Если это не удастся, используйте unset (), чтобы удалить выбранный элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...