我有一个PHP文件的问题,它在页面中嵌入了一些Javascript。 JS正在使用下划线模板引擎,它恰好使用ASP风格的标签(<% ... %>
)进行输出。
客户端的PHP配置启用了ASP样式标记,这打破了文件语法。
我可以在文件顶部添加任何类型的指令,还是让PHP处理器忽略这些标记的任何其他技巧?我正在寻找一种方法来做这个而无需修改php.ini 。但如果这是唯一的方法,请告诉我。
答案 0 :(得分:4)
试试这个.htaccess
文件:
php_flag asp_tags off
如果您只想禁用一个文件的asp标签,请使用此规则:
<files file-with-asp-syntax.php>
php_flag asp_tags off
</files>
答案 1 :(得分:1)
客户端的PHP配置是否在Windows服务器上运行?如果是这样,您应该能够通过在该应用程序的目录中添加.ini文件,在每个目录的基础上设置PHP配置。
过去可以在运行时通过init_set()
更改标记的使用,例如ini_set('asp_tags', 0)
,但我不确定最新版本的PHP是否仍然允许这样做。
在Apache服务器上,您可以通过将php_flag asp_tags Off
添加到.htaccess文件来更改设置
我现在无法测试任何这个,但希望这会给你一个开始的地方。
答案 2 :(得分:1)
<强> page.php文件:强>
...
<script type="text/javascript">
var template = '<?php echo <<<HEREDOC
<h1>\
<%- model.title %>\
</h1>\
<% if (model.body) { %>\
<p>\
<%- model.body %>\
</p>\
<% } %>\
HEREDOC;
?>';
</script>
...
HEREDOC开头和结尾的空白行有两个目的:
'
)HEREDOC
包装器,缩进和换行就是这样的。这对于转义围绕实际PHP的ASP标记来说是一个糟糕的选择,因为HEREDOC
标记的插值方式与PHP中的双引号("
)字符串相同,其中变量输出到生成的文件。文档:PHP String - Variable Parsing
如果您可以控制服务器环境并且可以依赖PHP&gt; 5.3,那么你可以使用NOWDOC来完全避免这个警告。 NOWDOC通过标识符周围的单引号区别于HEREDOC,并防止在所附文本中插入PHP变量。文档:PHP String - Nowdoc