我正在开发一种产品,我将提供的一个选项是能够从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。但是,这不起作用。当我尝试回显变量时,我收到此错误“意外的令牌:”。
有人能指出我正确的方向吗?
感谢。
答案 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']); ?>'));