【问题标题】:WordPress Single Quote JSON IssueWordPress单引号JSON问题
【发布时间】:2014-03-23 03:22:15
【问题描述】:

在 WordPress 简码函数中,我有以下内容:

$args=shortcode_atts( array(
   'setting1' => 'value1',
   'setting2' => 'value2'
), $atts);


return '<div data-myData=\'{' . json_encode( $args ) . '}\' ></div>';

我正在尝试检索参数并返回一个 HTML 字符串。该 html 应如下所示:

<div data-myData='{ "setting1" : "value1" , "setting2" : "value2" }'></div>

然后一些 JS 从那里拾取它。 但是,似乎无论我如何处理这个问题,WP 都会在 data-myData 属性 上将我的单引号转换为双引号,最后我得到了这个:

<div data-myData="{ "setting1" : "value1" , "setting2" : "value2" }"></div>

我在这里缺少一些简单的东西吗? 谢谢!

【问题讨论】:

    标签: php arrays json wordpress


    【解决方案1】:

    您将 JSON 插入到 html 上下文中,因此您需要使用特定于 HTML 的引用方法:

    return '<div data-myData="' . htmlspecialchars(json_encode( $args )) . '"></div>';
                                  ^^^^^^^^^^^^^^^^
    

    【讨论】:

    • 这似乎仍然没有在 data-myData 属性上产生单引号......
    • 为什么需要单引号?双引号是 html 属性的首选引号。
    • 我将 JSON 作为属性值插入,外部需要单引号 - 这是有效的。
    • 这是 htmlspecial 字符的来源。json中的双引号将变为&amp;quote;,所以你最终会得到data-Mydata="&amp;quote;foo&amp;quote;"
    • 对不起,但这不是我想要的。我目前正在将一个 JSON 对象传递给一个 100% 有效的 JS 文件。我现在需要在 php 中构建一个包含这个 html 的字符串。唯一的条件是属性值的外部引号必须是单引号。里面的引号都已经处理好了。
    猜你喜欢
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2014-03-27
    • 1970-01-01
    相关资源
    最近更新 更多