Попробуйте что-то вроде этого:
if (isset($_SERVER['HTTP_REFERER'])) {
$host = strtolower(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST));
$exp_list = array('google', 'yahoo');
$pattern = '/^(?:www\.)?(?:'.implode('|', array_map('preg_quote', $exp_list)).')\./'
if (preg_match($pattern, $host)) {
// match found
}
}
Важные вещи:
- Проверьте, существует
$_SERVER['HTTP_REFERER']
или нет
- Используйте
parse_url
, чтобы получить хост от URL-адреса, чтобы искать только там
- Проверка, если термины заключены в точки
Но это все равно будет неверно идентифицировать хост, такой как www.google.example.com . Поэтому вы также можете указать доменные имена верхнего / второго уровня.