猿问

如何在 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()返回一个数组,该数组似乎在以下字符串中被破坏。

这个词can't似乎导致字符串结束,从而阻止按钮启动。json_encode似乎没有解决这个问题。


  public function getWebShare() {

    foreach ($this->web_share as &$value) {

      $value = addslashes($value);

    }

    return $this->web_share;

  }

addslashes方法似乎确实将 the 添加\can't试图对其进行转义的单词中,但它仍然破坏了整个字符串,如上图所示。

我该如何处理以单个撇号结尾的字符串?


幕布斯7119047
浏览 101回答 1
1回答

翻阅古今

该函数json_encode仅将数据编码为有效的 JSON 格式。要使用 JSON 字符串(或任何与此相关的字符串)作为有效的 HTML 标记属性,您应该使用htmlspecialchars或等效方式来处理它。Twig 的逃逸过滤器应该适合您的情况。<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"}]'>
随时随地看视频慕课网APP
我要回答