如何在 PHP json_encode 中转义撇号
How escape apostrophe in PHP json_encode
我正在将 json_encode 对象传递到按钮中。
<button aria-controls="web-share-fallback" aria-expanded="false"
class="c-share__link btn-link underline font-normal"
data-js="web-share track" data-web-share='{{
post.getWebShare()|json_encode }}' data-track-key="Web Share" data-track-data='[{"action": "web-share"}]'>
现在 getWebShare()
returns 一个似乎在以下字符串中中断的数组。
can't
一词似乎导致字符串结束,从而阻止按钮启动。 json_encode
似乎没有解决这个问题。
public function getWebShare() {
foreach ($this->web_share as &$value) {
$value = addslashes($value);
}
return $this->web_share;
}
方法 addslashes 确实似乎是将 \
添加到 can't
试图转义的单词,但它仍然破坏了完整的字符串,如上图所示。
如何处理以单撇号结尾的字符串?
函数json_encode
仅将数据编码为有效的JSON格式。要使用 JSON 字符串(或与此相关的任何字符串)作为有效的 HTML 标签属性,您应该使用 htmlspecialchars 或等效的方式来处理它。
Twig 的 escape 过滤器应该适合您的情况。
<button aria-controls="web-share-fallback" aria-expanded="false"
class="c-share__link btn-link underline font-normal"
data-js="web-share track" data-web-share='{{
post.getWebShare()|json_encode|escape }}' data-track-key="Web Share" data-track-data='[{"action": "web-share"}]'>
我正在将 json_encode 对象传递到按钮中。
<button aria-controls="web-share-fallback" aria-expanded="false"
class="c-share__link btn-link underline font-normal"
data-js="web-share track" data-web-share='{{
post.getWebShare()|json_encode }}' data-track-key="Web Share" data-track-data='[{"action": "web-share"}]'>
现在 getWebShare()
returns 一个似乎在以下字符串中中断的数组。
can't
一词似乎导致字符串结束,从而阻止按钮启动。 json_encode
似乎没有解决这个问题。
public function getWebShare() {
foreach ($this->web_share as &$value) {
$value = addslashes($value);
}
return $this->web_share;
}
方法 addslashes 确实似乎是将 \
添加到 can't
试图转义的单词,但它仍然破坏了完整的字符串,如上图所示。
如何处理以单撇号结尾的字符串?
函数json_encode
仅将数据编码为有效的JSON格式。要使用 JSON 字符串(或与此相关的任何字符串)作为有效的 HTML 标签属性,您应该使用 htmlspecialchars 或等效的方式来处理它。
Twig 的 escape 过滤器应该适合您的情况。
<button aria-controls="web-share-fallback" aria-expanded="false"
class="c-share__link btn-link underline font-normal"
data-js="web-share track" data-web-share='{{
post.getWebShare()|json_encode|escape }}' data-track-key="Web Share" data-track-data='[{"action": "web-share"}]'>