@gh0st_d0g

Как отфильтровать массив php по регулярному выражению?

Имеется массив подобного вида
$array=Array
(
[0] => Куртка Waterproof-01.jpg
[1] => Куртка Waterproof-02.jpg
[2] => Куртка Waterproof-03.jpg
[3] => Куртка Water Mod-01.jpg
[4] => Куртка Water Mod-02.jpg
)
Мне необходимо его разобрать регуляркой на подстроки для выделения схожих, отличающихся лишь символом "-" и двухзначной цифрой.
Регулярку подобрал под свою ситуацию
function mask($var){
return preg_match('/^([a-zA-Zа-яА-Я\d\s]+)-([\d]+)(\.jpg)$/', $var);
}
Пытаюсь вывести результат array_filter($array, 'mask') на что print_r мне возвращает пустой массив. Куда копать не пойму.
  • Вопрос задан
  • 274 просмотра
Решения вопроса 1
Dry7
@Dry7
Web разработчик
Да сделайте обычным перебором, хоть не особенно красиво, но работает

$array=Array
(
0 => 'Куртка Waterproof-01.jpg',
1 => 'Куртка Waterproof-02.jpg',
2 => 'Куртка Waterproof-03.jpg',
3 => 'Куртка Water Mod-01.jpg',
4 => 'Куртка Water Mod-02.jpg'
);

$new = [];

foreach ($array as $el) {
	@$new[preg_replace('/[\-0-9]/i', '', $el)][] = $el;
}

echo '<pre>';
print_r($new);
echo '</pre>';
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
У вас в регулярке закрывающего слеша нет, она не валидна. Ну точку перед жпг нужно экранииовать.
Ответ написан
alexxxst
@alexxxst
/u
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы