Найти строку в массиве $_SERVER
Есть переменная $_SERVER и есть строка musical_ly
Задача: Нужно узнать есть ли строка musical_ly в переменной $_SERVER посредством PHP.
Если совпадение найдено: в переменную $data записать true если нет записать false
Прошу помощи в реализации.
Ответы (2 шт):
$_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;
}
}
Как-то так? Не?
Можно всё склеить в строку и поискать через 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, но если не ошибаюсь, приведённые варианты самые быстрые. Кроме того, если искомая строка содержала бы спецсимволы, в остальных могла бы не найтись, та как они там окажутся заэкранированы и её саму пришлось бы модифицировать в соответствие с правилами каждой из функций.