Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript字符串中转义斜杠?_Javascript_Php - Fatal编程技术网

如何在Javascript字符串中转义斜杠?

如何在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]'); ?>

在一个名为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]'); ?>";
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 );