如何在php变量中存储css代码以与Javascript一起使用

时间:2012-03-08 03:31:30

标签: php javascript jquery variables gradient

我正在开发一种产品,我将提供的一个选项是能够从ColorZilla等可靠来源复制和粘贴您自己的CSS渐变代码。

如何将这些代码保存在PHP对象中(用作默认设置)并在javascript / jquery代码中输出,同时保留代码的编程意义。我尝试过使用“addslashes()”无济于事。

目前,我已经:

$default_options = array(
        'header_wrap_grad'          =>          '
                                            background: rgb(169,3,41); /* Old browsers */
                                            background: -moz-linear-gradient(top,  rgba(169,3,41,1) 0%, rgba(143,2,34,1) 44%, rgba(109,0,25,1) 100%); /* FF3.6+ */
                                            background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(169,3,41,1)), color-stop(44%,rgba(143,2,34,1)), color-stop(100%,rgba(109,0,25,1))); /* Chrome,Safari4+ */
                                            background: -webkit-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* Chrome10+,Safari5.1+ */
                                            background: -o-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* Opera 11.10+ */
                                            background: -ms-linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* IE10+ */
                                            background: linear-gradient(top,  rgba(169,3,41,1) 0%,rgba(143,2,34,1) 44%,rgba(109,0,25,1) 100%); /* W3C */
                                            filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=\'#a90329\', endColorstr=\'#6d0019\',GradientType=0 ); /* IE6-9 */
                                            ',

然后在我得到的标签内:

$('#header-wrap-grad').attr('value', '<?php echo addslashes($default_options['header_wrap_grad']); ?>');

#header-wrap-grad是我试图用变量中的css代码填充的textarea。但是,这不起作用。当我尝试回显变量时,我收到此错误“意外的令牌:”。

有人能指出我正确的方向吗?

感谢。

2 个答案:

答案 0 :(得分:2)

您正在创建JavaScript字符串,因此请使用json_encode(并且不包含引号):

$('#header-wrap-grad').attr('value', <?php echo json_encode($default_options['header_wrap_grad']); ?>);

答案 1 :(得分:1)

你在字符串中的换行符有问题,它们会破坏JS代码。

您可以使用rawurlencode对PHP中的字符串进行编码,并使用decodeURIComponent解码JS中的字符串。

$('#header-wrap-grad')
 .attr('value', 
    decodeURIComponent('<?php echo rawurlencode($default_options['header_wrap_grad']); ?>'));