[[*id:is=`1`:then=`
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`a?`]]
</div>
`]]
[[*id:is=`1`:then=`
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`?`]]
</div>
`]]
[[*id:is=`1`:then=`
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`?a`]]
</div>
`]]
This question has been answered by multiple community members. See the first response.
A character followed by a question mark is tells the parser that arguments follow. If there is more than one such combo in a tag, the parser will get confused.
If _utility is your own snippet, you can use some other character or character combination where you want the question mark (e.g., QQ) and translate it in the snippet.
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`How was your day?`]]
</div>
[[*id:is=`1`:then=`
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`How was your day?`]]
</div>
`]]
[[!*id:is=`1`:then=`
<div id="settings-wrapper" style="min-height: 50px;">
[[!_utility? &type=`settings` &data=`?`]]
</div>
`]] Just for kicks, have you tried this?
[[!*id:is=`1`:then=` <div id="settings-wrapper" style="min-height: 50px;"> [[!_utility? &type=`settings` &data=`?`]] </div> `]]
If my understanding of the parser is any good, the problem you're seeing is due to the parsing order. _utility is uncached, causing it to be processed later, and the [[*id]] processing taking place first, which is where the parser gets confused with the extra backticks and the question mark..