Шаблон:
"(?P<name>[^/\?]+)/(?P<age>[^/\?]+)"
Данные:
"john/23"
Возвращает:
array(4) {
["name"]=> string(4) "john"
[0]=> string(4) "john"
["age"]=> string(2) "23"
[1]=> string(2) "23"
}
Нужно что бы в массиве не дублировались значения.
array_unique()
Для моего решения не подходит, так как данные иногда могут совпадать.
Вариантов несколько.
Первый – не использовать именованные подмаски и тогда у вас будет обычный индексный массив.
Второй – обработать текущий массив удалив все числовые ключи:
$newArray = array_filter($matches, function($k) {
return !is_numeric($k);
}, ARRAY_FILTER_USE_KEY));
var_dump($newArray);
Третий – не использовать вообще регулярку, если вам нудно просто разбит строку с одним единственным разделителем:
$newArray = explode('/', "john/23");
var_dump($newArray);
используйте
explode('/',$string)
вернет не ассоциативный массив вида
array (
0 => 'josh',
1 => 23
)
Регулярным выражением тут ничего не сделаешь. Как вариант можно пробежаться по массиву и сделать unset для всех элементов у которых индекс является целым числом.
Можно через банальный foreach или через array_filter
Есть еще вариант позволяющий сохранить структуризацию регулярного выражения за счет выноса именованных групп в блок (?(DEFINE)...)
, а для захваченного текста задать новые группы, которые будут помещены в результат без дублирования:
(?(DEFINE)
(?P<name>[^\/\?]+)
(?P<age>[^\/\?]+)
)
((?P>name)) # group 1
\/
((?P>age)) # group 2
https://regex101.com/r/fG9lW1/1
Результат:
array(2) {
[1]=> string(4) "john"
[2]=> string(2) "23"
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Предо мной, стояла задача интегрировать в сайт бд стран и городовПрочел несколько статей и решил интегрировать с api в контакте
Для вывода значений массива я использую цикл foreachВ основном массиве содержатся массивы фильмов которые содержат данные о фильмах
Мне необходимо часто делать много почти одинаковых заявокОтправлять надо в jpg