如何在Javascript字符串中转义斜杠?
在一个名为file-a.php的文件中,我创建了一个快捷码,用于打印以下(简化的)HTML标记:如何在Javascript字符串中转义斜杠?,javascript,php,Javascript,Php,在一个名为file-a.php的文件中,我创建了一个快捷码,用于打印以下(简化的)HTML标记: <div><a href="#"><span>Link text</span></a></div> 在file-b.php中,我恢复[shortcode]并将其放入javascript变量: var myvariable = "<?php print do_shortcode('[shortcode]'); ?>
<div><a href="#"><span>Link text</span></a></div>
在file-b.php中,我恢复[shortcode]并将其放入javascript变量:
var myvariable = "<?php print do_shortcode('[shortcode]'); ?>";
var myvariable=”“;
这是我打印“myvariable”时得到的HTML标记:
链接文本
实际上,当检测到第一个“/”时,标记被中断
我试着咨询了一些资源,但还没有找到任何解决方案。请考虑我的PHP和JS知识是受限制的。如果您能为我指出一个可能的解决方案,谢谢。您必须使用目标语言(JavaScript)的规则对
do\u shortcode()
返回的值进行编码
PHP编码字符串以生成JavaScript代码的最佳方法是
您的代码应该是:
var myvariable = <?php print json_encode(do_shortcode('[shortcode]')); ?>;
这是有效的JavaScript代码,它将上述字符串放入JavaScript变量
myvariable
谢谢您的回答。这是文件-a.php(functions.php,WordPress)中的代码:
function shortcode_function(){
打印“测试””;
}
添加_短代码('shortcode','shortcode_函数');
这是文件-b.php(footer.php,WordPress)中的代码:
jQuery(文档).ready(函数($){
var myvariable=“”;
$('.footer').prepend(myvariable);
});
如您所见,这将返回一个断开的标记
<script>
jQuery(document).ready(function($) {
var myvariable = "<p>Test";
$( '.footer' ).prepend( 'myvariable );
});
</script>
</body>
</html>
jQuery(文档).ready(函数($){
var myvariable=“Test”;
$('.footer').prepend('myvariable');
});
这是json_encode()的结果,带引号和不带引号,在公共页面上看不到任何内容:
var myvariable = "<?php print json_encode(do_shortcode('[shortcode]')); ?>";
var myvariable = "<p>Test""";
var myvariable = <?php print json_encode(do_shortcode('[shortcode]')); ?>;
var myvariable = <p>Test"";
var myvariable=”“;
var myvariable=“Test”“”;
var myvariable=;
var myvariable=Test”“;
实际上,我试图在页脚区域之前打印一些动态数据,这些数据是通过PHP查询从数据库中提取的。
动态数据打印正确,但HTML标记不正确。这是我的解决方案。它以其基本形式工作,现在我正在扩展它 我在functions.php>
print "<p class='red'>RED<\/p>";
Javascript变量
sanitized_str
…已正确渲染,打印时在线可见正确的HTML标记,如下所示:
$( '.footer' ).prepend( sanitized_str );
页面标记中的所有标记都被不正确地关闭(例如,但公共结果已被消毒且清晰可见。您好,请出示do_短代码功能的代码好吗?如果我没有弄错,使用黑色斜杠将屏蔽和转义特殊字符。您是否尝试过这样做?(例如:“某物/其他”=>“something\/else”)是的,我也尝试使用反斜杠来避开正斜杠,但没有成功。更清楚地说,在基本代码中添加反斜杠…print'Test';…renders…var myvariable=Test”“;我自己的评论为我提供了解决方案的提示。几分钟后,我将在这里写下详细信息。
var myvariable = "<?php print json_encode(do_shortcode('[shortcode]')); ?>";
var myvariable = "<p>Test""";
var myvariable = <?php print json_encode(do_shortcode('[shortcode]')); ?>;
var myvariable = <p>Test"";
print "<p class='red'>RED<\/p>";
var str = "<p class='red'>RED<\/p>";
var sanitized_str = str.replace(/\\/g, '');
sanitized_str
$( '.footer' ).prepend( sanitized_str );