How can IP addresses and UserAgents be used to differentiate between search engine crawlers and regular users in PHP?

To differentiate between search engine crawlers and regular users in PHP, you can check the UserAgent string and IP address of the incoming request. Search engine crawlers typically have specific UserAgent strings and may come from a set of known IP addresses. By comparing these values, you can determine if the request is coming from a search engine crawler or a regular user.

$userAgent = $_SERVER['HTTP_USER_AGENT'];
$ipAddress = $_SERVER['REMOTE_ADDR'];

$searchEngineUserAgents = array('Googlebot', 'Bingbot', 'Yahoo! Slurp');
$searchEngineIPs = array('123.456.789.10', '210.123.45.67');

$isSearchEngine = false;

foreach ($searchEngineUserAgents as $crawlerUserAgent) {
    if (strpos($userAgent, $crawlerUserAgent) !== false) {
        $isSearchEngine = true;
        break;
    }
}

if (in_array($ipAddress, $searchEngineIPs)) {
    $isSearchEngine = true;
}

if ($isSearchEngine) {
    echo 'This is a search engine crawler.';
} else {
    echo 'This is a regular user.';
}