我刚开始使用三元运算符,因为我觉得它们确实使我的代码看起来更整洁 - 但是今天我遇到了一个问题。
如果某个请求变量设置为true(为了减少对不需要的文件的http请求),我试图将一些脚本标记回显到我的标题中,但是每当我尝试加载页面时,我都会收到错误:
require_once(./public/lib/functions.js'></script>):
^在上一节中,为什么浏览器会解释html编码的字符,为什么我会丢失在我的require语句之前的<script>
标记?
这是我正在使用的代码。
echo $ajax_required == true
? "<script src='" . require_once(LIBRADIR . 'functions.js') . "'></script>"
: false;
提前致谢, 亚历克斯。
答案 0 :(得分:2)
如果它只是一个.js
文件而不是.php
文件,那么您可能直接使用文件名作为字符串,而不是require()
。
echo html_entity_decode(($ajax_required == true))
? "<script src='" . LIBRADIR . "functions.js'></script>"
: false;
注意: require()用于在代码中包含.php
脚本,主要是为了重用现有代码(函数,类等)。
答案 1 :(得分:2)
目前评估为:
require_once(('index.php'). "'></script>")
您只需要另一个括号来获得更高的优先级:
(require_once('index.php'))
^ ^
echo html_entity_decode((true == true))
? "<script src='" . (require_once('index.php')) . "'></script>"
: false;
另外请记住require_once
或require
是您不需要将其称为函数参数的语言构造。你也可以这样写上面的语句:
(require_once 'index.php')
答案 2 :(得分:1)
肯定没有使用require_once,因为它用于PHP文件。我想你只想这样做:
echo $ajax_required? "<script src='" . LIBRADIR . "functions.js'></script>": "";
这将只打印来自三元运算符的输出,即脚本标记或空字符串。