ampproject / amp-toolbox-php

AMP Optimizer PHP library
Apache License 2.0
74 stars 23 forks source link

ampersand sign converted into unicode when added to analytics config. #529

Open milindmore22 opened 1 year ago

milindmore22 commented 1 year ago

Bug Description

A user reported on support forums that the & is being converted to Unicode character \u0026 when being added to the analytics config.

After disabling optimizer it did output correctly add_filter( 'amp_enable_optimizer', '__return_false' );

Steps to reproduce You can reproduce using the AMP plugin for WordPress, steps assuming that you have WordPress site with AMP plugin installed

Step 1 : Login as Admin Step 2: Goto AMP->Settings->Analytics Step 3: Enter the type as "test" (you can add anything as type was unknow from support topics) Step 4: add JSON config as below

{
  "requests": {
    "custom_params": "cp1=test&cp2=test"
  },
  "vars": {
    "env": "-preproduction"
  },
  "triggers": {
    "trackConsent": {
      "on": "visible",
      "request": "impression"
    }
  }
}

Expected Output Same output as entered in config.

Current Behaviour

{
  "requests": {
    "custom_params": "cp1=test\u0026cp2=test"
  },
  "vars": {
    "env": "-preproduction"
  },
  "triggers": {
    "trackConsent": {
      "on": "visible",
      "request": "impression"
    }
  }
}
Screenshot Input Output
image image
westonruter commented 1 year ago

I don't think this is a problem. In JavaScript, \u0026 is the encoding of an ampersand the same way that & or & is the way to encode the ampersand in HTML. In CSS, the encoding of & is \0026. They all get decoded in the end as &.