За последние 24 часа нас посетили 35275 программистов и 1696 роботов. Сейчас ищут 1069 программистов ...

Отфильтровать массив по содержимому.

Тема в разделе "PHP для новичков", создана пользователем Alex42, 5 дек 2017.

Метки:
  1. Alex42

    Alex42 Новичок

    С нами с:
    20 ноя 2017
    Сообщения:
    22
    Симпатии:
    0
    Привет, есть массив, примерно такой
    [694] => do
    [695] => bi
    [696] => Ne
    [697] => Ba
    [698] => MT
    [699] => r.
    [700] => 45
    [701] => /a
    [702] =>
    [703] =>
    [704] =>
    [705] => a
    [706] => href="http://что-то там.html"
    [707] => B
    [708] => Ne


    Как можно его отфильтровать, чтобы остались только ссылки? Спасибо. Если вопрос раскрыть, то проблема в том, что я не догоняю, как пишутся условия для фильтрации к примеру методом array_filter
     
  2. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Ну, к примеру
    PHP:
    1. $arr = array_filter($arr, function($x) {return strpos('http://', $x) !== FALSE; }
     
  3. laszlopv

    laszlopv Активный пользователь

    С нами с:
    26 фев 2017
    Сообщения:
    244
    Симпатии:
    40
    Вам нужно написать функцию которая будет искать признак ссылки строке и вставить её вторым атрибутом. Функция должна возвращать булевы значения.

    array_filter($array, "func")
     
  4. Alex42

    Alex42 Новичок

    С нами с:
    20 ноя 2017
    Сообщения:
    22
    Симпатии:
    0
    я выделил жирным, function($x) - что это?
    --- Добавлено ---
    так, отлично, а как указать на признак ссылки?
     
  5. Хыиуду

    Хыиуду Активный пользователь

    С нами с:
    3 июн 2014
    Сообщения:
    618
    Симпатии:
    5
    Вторым параметром в array_filter передается либо имя функции, либо сама функция. Здесь второй случай - передается безымянная функция, которая проверяет, есть ли в ее аргументе подстрока 'http://'
     
  6. vaajnur

    vaajnur Новичок

    С нами с:
    15 май 2017
    Сообщения:
    40
    Симпатии:
    3
    $matches = preg_grep('#[http:]#', $arr);
     
  7. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @vaajnur, быть может, #https?:# ?
     
  8. vaajnur

    vaajnur Новичок

    С нами с:
    15 май 2017
    Сообщения:
    40
    Симпатии:
    3
    весьма