如何在特定文件中禁用ASP样式的PHP标记?

时间:2013-02-04 19:33:38

标签: php underscore.js

我有一个PHP文件的问题,它在页面中嵌入了一些Javascript。 JS正在使用下划线模板引擎,它恰好使用ASP风格的标签(<% ... %>)进行输出。

客户端的PHP配置启用了ASP样式标记,这打破了文件语法。

我可以在文件顶部添加任何类型的指令,还是让PHP处理器忽略这些标记的任何其他技巧?我正在寻找一种方法来做这个而无需修改php.ini 。但如果这是唯一的方法,请告诉我。

3 个答案:

答案 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)

我找到了一种方法,可以为下划线标签运行GREAT:

<强> 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开头和结尾的空白行有两个目的:

  • 防止您在javascript中意外转义结束语('
  • 如果没有添加HEREDOC包装器,缩进和换行就是这样的。

注意事项

这对于转义围绕实际PHP的ASP标记来说是一个糟糕的选择,因为HEREDOC标记的插值方式与PHP中的双引号(")字符串相同,其中变量输出到生成的文件。文档:PHP String - Variable Parsing

如果您可以控制服务器环境并且可以依赖PHP&gt; 5.3,那么你可以使用NOWDOC来完全避免这个警告。 NOWDOC通过标识符周围的单引号区别于HEREDOC,并防止在所附文本中插入PHP变量。文档:PHP String - Nowdoc