Форум программистов, компьютерный форум, киберфорум
PHP: RegExp
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
1

Отсеять из массива один определенный элемент

25.08.2014, 16:17. Показов 1906. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть массив такого вида:
Array
(
[1] => [path]

[2] => plugins = plugins

[3] => cache = cache

[4] => comments = comments

[5] => [cache]

[6] => enable = yes

[7] => expiration = 86400

[8] => [distribute]

[9] => [urll]http://autoselect[/urll] = auto

)
Из этого массива нужно получить все элементы КРОМЕ одного, вот этот "нежелательный элемент" - "[9] => [urll]http://autoselect[/urll] = auto"
Вот что делаю я:
PHP
1
2
3
4
5
6
7
8
9
foreach($n_arr as $n_str){
    if(preg_match('/[^:]*/', $n_str, $arr)){
        $x=$arr[1];
        $mas[$x]=array();
        echo '<pre>';
        print_r($arr[0]); 
        echo '</pre>';
    }
}
По идее рег. выражение должно отсеять ту единственную строку где присутствует знак двоеточия. Но вместо этого мы получаем такой ответ:
[path]
plugins = plugins
cache = cache
comments = comments
[cache]
enable = yes
expiration = 86400
[distribute]
[urll]http
Хотя по идее должны были получить такой ответ:
[path]
plugins = plugins
cache = cache
comments = comments
[cache]
enable = yes
expiration = 86400
[distribute]
Подскажите что делать. Буду рад любому совету
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.08.2014, 16:17
Ответы с готовыми решениями:

Как вычесть определенный элемент массива из другого массива?
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt;...

Получить определенный элемент массива
Привет, друзья! Подскажите, как из массива: ARRAY ( =&gt; фрукт1; =&gt; фрукт2; =&gt; фрукт2; =&gt;...

Как удалить определенный элемент массива
Как удалить определенный элемент массива допустим массив из 20 чисел мне надо удалить 19 и так...

Каждый элемент массива заменить на ближайший следующий за ним элемент за один просмотр
В масcиве А размера N за один просмотр необходимо каждый элемент заменить на ближайший следующий...

11
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
25.08.2014, 17:57 2
mihon1,
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$a =  [ 1 => "[path]", 
        2 => "plugins = plugins",
        3 => "cache = cache",
        4 => "comments = comments",
        5 => "[cache]",
        6 => "enable = yes",
        7 => "expiration = 86400",
        8 => "[distribute]",
        9 => "[urll]http://autoselect[/urll] = auto",
      ];
foreach($a as $k => $v)
  if (preg_match("/:/", $v))
    unset($a[$k]);
echo "<pre>";
print_r($a);
Код
Array
(
    [1] => [path]
    [2] => plugins = plugins
    [3] => cache = cache
    [4] => comments = comments
    [5] => [cache]
    [6] => enable = yes
    [7] => expiration = 86400
    [8] => [distribute]
)
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
25.08.2014, 21:35  [ТС] 3
К сожалению этот вариант мне не походит.
Мне нужно вот что понять, пример:
/(cat)/ - Это выражение найдет все слова "cat".
Как составить такое регулярное выражение чтобы оно нашло все КРОМЕ "cat'?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
25.08.2014, 22:18 4
Цитата Сообщение от mihon1 Посмотреть сообщение
К сожалению этот вариант мне не походит.
Этот вариант делает ровно то, чего Вы просили в первом посте. Чем же он не подходит?
Цитата Сообщение от mihon1 Посмотреть сообщение
/(cat)/ - Это выражение найдет все слова "cat".
Как составить такое регулярное выражение чтобы оно нашло все КРОМЕ "cat'?
"/[^cat]/"
http://php.net/manual/ru/regex... lasses.php
1
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
259 / 223 / 109
Регистрация: 07.07.2014
Сообщений: 965
25.08.2014, 22:36 5
Зачем тут регулярка?..

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$a =  [ 1 => "[path]", 
        2 => "plugins = plugins",
        3 => "cache = cache",
        4 => "comments = comments",
        5 => "[cache]",
        6 => "enable = yes",
        7 => "expiration = 86400",
        8 => "[distribute]",
        9 => "[urll]http://autoselect[/urll] = auto",
      ];
$a = array_filter($a, function($item){
    return strpos($item, ':') === false;
});
print_r($a);
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
26.08.2014, 17:07  [ТС] 6
Если использовать - "/[^cat]/". То регулярка выдаст все символы кроме символов "с", "a", "t". А мне нужно чтобы регулярка выдала все слова кроме "cat".
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
26.08.2014, 17:14 7
Цитата Сообщение от mihon1 Посмотреть сообщение
Если использовать - "/[^cat]/". То регулярка выдаст все символы кроме символов "с", "a", "t". А мне нужно чтобы регулярка выдала все слова кроме "cat".
Пардон. http://php.net/manual/ru/regex... rtions.php
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
26.08.2014, 18:28  [ТС] 8
я сейчас почитал, потестил выражения такого вида "/(?<!cat)/" - тоже не работает. Помогите просто составить регулярку которая будет пропускать все кроме "cat". Пожалуйста.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
26.08.2014, 23:35 9
Цитата Сообщение от mihon1 Посмотреть сообщение
я сейчас почитал, потестил выражения такого вида "/(?<!cat)/" - тоже не работает. Помогите просто составить регулярку которая будет пропускать все кроме "cat". Пожалуйста.
Приведите конкретный пример - входная строка и желаемый результат. А то Вас тяжело понять...
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
26.08.2014, 23:46  [ТС] 10
Вообщем вот исходный массив:
Array
(
[1] => path
[2] => cache
[3] => distribute
[4] => url
)
Нужно написать такое регулярное выражение чтобы оно выбирало из этого массива все элементы кроме кроме элемента "url". И нужно написать ИМЕННО рег. выраж.. continue и unset() при переборе массива не подойдут.
0
F́́́́́́́ŕ́́́́́́́é́́́ ́ak
259 / 223 / 109
Регистрация: 07.07.2014
Сообщений: 965
27.08.2014, 11:12 11
Лучший ответ Сообщение было отмечено mihon1 как решение

Решение

mihon1, ну так
PHP
1
2
3
if(!preg_match("#^url$#")){
  // ...
}
1
0 / 0 / 2
Регистрация: 02.09.2013
Сообщений: 237
27.08.2014, 20:22  [ТС] 12
все спасибо большое! заработало!
0
27.08.2014, 20:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.08.2014, 20:22
Помогаю со студенческими работами здесь

Проверить по очереди один элемент одного массива с каждым элементом другого массива
подскажите как проверить по очереди один элемент одного массива с каждым элементом другого массива?

Отсеять из массива числа, содержащие заданные цифры
Как в массиве чисел, однозначных, двухзначных и т.д. найти цифры, которые я задам, например...

Из массива А удалить те цепочки четных элементов, в которых есть хотя бы один элемент из массива В
помогите, пожалуйста!!!! из массива А удалить те цепочки четных элементов, в которых есть хотя бы...

Дан массив A[20] и B[10] после каждой пары элемента массива A вставить один элемент массива B
Дан массив A и B после каждой пары элемента массива A вставить один элемент массива B. На языке С++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru