基于WordPress的网站的一个php文件中的一个函数被切断,我认为由于转义多个引号和斜杠时出错。
以下是有问题的代码行:
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/js/vendor/jquery-1.11.0.min.js"><\/script>\')</script>' . "\n";
它生成以下html:
<script>window.jQuery || document.write('
'
之后的其他所有内容都未显示且未执行。
作为临时解决方案,我将结束<!-- my hack --> </script>
标记直接插入到html页面。
这导致了以下html输出:
<script>window.jQuery || document.write('<script type='text/javascript' src='/wp-content/themes/my-theme/assets/js/vendor/modernizr-2.7.0.min.js'></script><!-- my hack --></script>
没有看到任何错误,有人可以帮忙吗?这是整个功能:
function roots_jquery_local_fallback($src, $handle = null) {
static $add_jquery_fallback = false;
if ($add_jquery_fallback) {
echo '<script>window.jQuery || document.write(\'<script src="' . get_template_directory_uri() . '/assets/vendor/jquery/dist/jquery.min.js?1.11.1"><\/script>\')</script>' . "\n";
$add_jquery_fallback = false;
}
if ($handle === 'jquery') {
$add_jquery_fallback = true;
}
return $src;
}
add_action('wp_head', 'roots_jquery_local_fallback');
答案 0 :(得分:2)
PHP没有示例单引号(')分隔的字符串内的文本,因此\'不起作用。它确实解释了内部双引号(“),因此反向使用单引号和双引号并使用\”。
echo "<script>window.jQuery || document.write('<script src=\"" . get_template_directory_uri() . "/assets/js/vendor/jquery-1.11.0.min.js\"><\/script>\')</script>" . "\n";