/**
 * PHP 8で導入されたstr_contains()関数をpolyfillとして代替する関数です。
 * PHP 8未満のバージョンでstr_contains()関数を使用するために利用します。
 *
 * @param string $haystack 対象となる文字列です。
 * @param string $needle 検索したい部分文字列です。
 * @return bool 指定した文字列に部分文字列が含まれている場合はtrue、そうでない場合はfalseを返します。
 */
if (!function_exists('str_contains')) {
    /*
     * str_contains()関数のpolyfill
     * 出典:https://core.trac.wordpress.org/browser/trunk/src/wp-includes/compat.php#L423
     */
    function str_contains($haystack, $needle) {
        if ('' === $needle) {
            return true;
        }

        return false !== strpos($haystack, $needle);
    }
}

/**
 * モバイル端末を検出して判別する関数です。
 * HTTP_SEC_CH_UA_MOBILEヘッダーを確認し、HTTP_USER_AGENTを解析して
 * モバイル端末かどうかを判定します。
 *
 * @return bool モバイル端末が検出された場合はtrue、そうでない場合はfalseを返します。
 */
function is_mobile() {
    if (isset($_SERVER['HTTP_SEC_CH_UA_MOBILE'])) {
        // HTTP_SEC_CH_UA_MOBILEヘッダーが存在し、
        // 値が'?1'の場合はモバイル端末と判定します。
        // 参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Sec-CH-UA-Mobile
        return ('?1' === $_SERVER['HTTP_SEC_CH_UA_MOBILE']);
    } elseif (!empty($_SERVER['HTTP_USER_AGENT'])) {
        // HTTP_USER_AGENTを解析してモバイル端末の特徴を確認します。
        $user_agent = $_SERVER['HTTP_USER_AGENT'];

        return str_contains($user_agent, 'Mobile')
            || str_contains($user_agent, 'Android')
            || str_contains($user_agent, 'Silk/')
            || str_contains($user_agent, 'Kindle')
            || str_contains($user_agent, 'BlackBerry')
            || str_contains($user_agent, 'Opera Mini')
            || str_contains($user_agent, 'Opera Mobi');
    } else {
        // HTTP_SEC_CH_UA_MOBILEヘッダーもHTTP_USER_AGENTも存在しない場合は、
        // モバイル端末ではないものとして扱います。
        return false;
    }
}

/**
 * iOSを検出して判別する関数です。
 *
 * @return bool モバイル端末がiOSの場合はtrue、そうでない場合はfalseを返します。
 */
function is_ios() {
    return is_mobile() && preg_match('/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT']);
}

/**
 * Androidを検出して判別する関数です。
 *
 * @return bool モバイル端末がAndroidの場合はtrue、そうでない場合はfalseを返します。
 */
function is_android() {
    return is_mobile() && preg_match('/Android/', $_SERVER['HTTP_USER_AGENT']);
}

/* iOS、Androidかどうかによって異なるコードを実行します。 */
if (is_ios()) {
    // iOS環境で実行するコード
} elseif (is_android()) {
    // Android環境で実行するコード
} else {
    // その他の環境で実行するコード
}