Найти строку в массиве $_SERVER

Есть переменная $_SERVER и есть строка musical_ly

Задача: Нужно узнать есть ли строка musical_ly в переменной $_SERVER посредством PHP.

Если совпадение найдено: в переменную $data записать true если нет записать false

Прошу помощи в реализации.


Ответы (2 шт):

Автор решения: Eugene X

$_SERVER это массив если что, не строка.

foreach ($_SERVER as $k => $v) {
    if ((strpos($k, 'musical_ly') !== false) or (strpos($v, 'musical_ly') !== false)) {
        echo "Я нашел musical_ly в \$_SERVER[$k]!!! $_SERVER[$k]";
        break;
    }
}

Как-то так? Не?

→ Ссылка
Автор решения: Solt

Можно всё склеить в строку и поискать через strpos:

$str=implode(' ',array_values($_SERVER));
//Или даже так implode(' ',$_SERVER) ключи просто игнорируются

//Если надо искать и в именах заголовков, то их придётся уменьшить, 
//ибо они всегда в верхнем регистре
$str.=' '.strtolower(implode(' ',array_keys($_SERVER)));

//если нужна полная регистронезависимость, можно использовать stripos()
$data=strpos($str, 'musical_ly')!==false;

Либо вообще так

$data=stripos(print_r($_SERVER,1), 'musical_ly')!==false;

В php много функций, которые могут превратить массив в строку, помимо приведённых выше implode и print_r, есть json_encode, var_export, serialize, http_build_query, но если не ошибаюсь, приведённые варианты самые быстрые. Кроме того, если искомая строка содержала бы спецсимволы, в остальных могла бы не найтись, та как они там окажутся заэкранированы и её саму пришлось бы модифицировать в соответствие с правилами каждой из функций.

→ Ссылка