You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PHP脚本中输出JS获取的Google Analytics trackingID

前端提取GA追踪ID后与PHP预设值的优先级替换

我已通过以下JavaScript代码从页面现有脚本中提取Google Analytics的gtag追踪ID(trackingID):

const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi;

const scriptTags = document.querySelectorAll('script');
let trackingID = ''; 
scriptTags.forEach(script => {
    const src = script.getAttribute('src');
    if (src && src.includes('googletagmanager.com/gtag/js')) {
        const match = regex.exec(src);
        if (match && match.length > 1) {
            trackingID = match[1];
        }
    }
});

现在需要在两处PHP输出的脚本中实现逻辑:若trackingID存在则使用它,否则使用预设的$UA_CODE,具体修改方案如下:


1. 脚本src属性部分修改

原代码:

<script async src="<?php echo ( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ) . '?' . esc_html( $UA_CODE ); ?>"></script>

修改后代码

通过JS动态修改脚本的src属性,优先使用提取到的trackingID:

<!-- 先输出带默认ID的GA脚本,给它加个ID方便后续修改 -->
<script id="ga-script" async src="<?php echo ( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ) . esc_html( $UA_CODE ); ?>"></script>

<script>
// 保留trackingID提取逻辑
const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi;
const scriptTags = document.querySelectorAll('script');
let trackingID = ''; 
scriptTags.forEach(script => {
    const src = script.getAttribute('src');
    if (src && src.includes('googletagmanager.com/gtag/js')) {
        const match = regex.exec(src);
        if (match && match.length > 1) {
            trackingID = match[1];
        }
    }
});

// 替换GA脚本的src
const gaScript = document.getElementById('ga-script');
if (trackingID) {
    // 从PHP获取基础URL(避免硬编码)
    const baseUrl = <?php echo json_encode( $local_analytics_file ?? 'https://www.googletagmanager.com/gtag/js?id=' ); ?>;
    gaScript.src = baseUrl + trackingID;
}
</script>

2. 脚本内gaID变量赋值修改

原代码:

<script>
    console.log('Google Analytics Tracking ID:', trackingID);

    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    const configuration = JSON.parse( '<?php echo $configuration; ?>' );
    const gaID = '<?php echo esc_html( $UA_CODE ); ?>'; // 需优先使用trackingID,无则用$UA_CODE
</script>

修改后代码

直接在JS中通过逻辑或运算符实现优先级判断:

<script>
    // 保留trackingID提取逻辑
    const regex = /googletagmanager\.com\/gtag\/js\?id=([^\s'"]+)/gi;
    const scriptTags = document.querySelectorAll('script');
    let trackingID = ''; 
    scriptTags.forEach(script => {
        const src = script.getAttribute('src');
        if (src && src.includes('googletagmanager.com/gtag/js')) {
            const match = regex.exec(src);
            if (match && match.length > 1) {
                trackingID = match[1];
            }
        }
    });

    console.log('Google Analytics Tracking ID:', trackingID);

    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('js', new Date());

    const configuration = JSON.parse( '<?php echo $configuration; ?>' );
    // 优先使用trackingID,不存在则用PHP预设的$UA_CODE
    const gaID = trackingID || '<?php echo esc_html( $UA_CODE ); ?>';
    
    // 示例:用gaID初始化GA配置
    gtag('config', gaID, configuration);
</script>

内容的提问来源于stack exchange,提问作者ahmedwp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 01:10:36