将多行 PHP 字符串插入 Javascript 变量

Inserting a multiline PHP string into a Javascript variable

我的问题
我的问题是关于将 HTML 从 php 正确解析为 javascript 对象内部的变量(在本例中是 ace-editor 的值变量)

我的问题
我有一个 HTML 和 CSS 的文本区域,HTML 从数据库中检索并需要插入到 croppie 的字段中,我目前正在使用 PHP' s json_encode 将其放入变量内部的功能,但它似乎仍然从值中逃脱。

我的代码

<?php

        $css = ($modify) ? trim($template->style()) : "";
        $html = ($modify) ? trim( $template->html() ) : "";

        $html = json_encode($html);
        $css = json_encode($css);


    ?>
YUI().use(
        'aui-ace-editor',
        function(Y) {
            var editorhtml = new Y.AceEditor({
                boundingBox: '#editor-html',
                height: '400',
                mode: 'html',
                value: '<?php echo substr( $html, 1, -1 ); ?>',
                width: '100%',
                showPrintMargin: false
            }).render();

            var editorcss = new Y.AceEditor({
                boundingBox: '#editor-css',
                height: '400',
                mode: 'css',
                value: '<?php echo substr( $css, 1, -1 ); ?>',
                width: '100%',
                showPrintMargin: false
            }).render();
        }
    );

会发生什么
当我使用它并打开一个可以管理的特定模板时,我将无法看到文本区域(因为无法加载 ace 编辑器),我得到与第 666 行相关的随机错误,这是确切的行HTML 存储在。我确实正确地清理了 json_encode 中的输出.. 对吗?


在此屏幕截图中,您可以看到插入的 HTML/css。但是问题出现在HTML所在的第666行。

Click here if the screenshot isn't readable for you

所以我的问题是..
为什么它不能正确地将 HTML 解析为对象?我没有正确消毒还是遗漏了什么?

您的问题是因为您的 $html 字符串包含单引号,请尝试转义它们或使用双引号

您通过将 json_encode 创建的双引号更改为单引号来破坏 json_encode 的输出。

给script标签加值的时候最好直接调用json_encode:

value: <?php echo json_encode($html); ?>,