3

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

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

有没有我可以在文件顶部添加的指令,或者任何其他技巧让 PHP 处理器忽略这些标签?我正在专门寻找一种无需修改 php.ini即可做到这一点的方法。但如果这是唯一的方法,请告诉我。

4

3 回答 3

4

试试这个.htaccess文件:

php_flag asp_tags off

如果您只想禁用一个文件的 asp 标签,请在此处使用此规则:

<files file-with-asp-syntax.php>
php_flag asp_tags off
</files>
于 2013-02-04T19:49:00.013 回答
1

我找到了一种非常适合下划线标签的方法:

页面.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 字符串 - 变量解析

如果你可以控制你的服务器环境并且可以依赖 PHP > 5.3,那么你可以使用 NOWDOC 来完全避免这个警告。NOWDOC 与 HEREDOC 的区别在于标识符周围的单引号,并防止 PHP 变量在封闭文本中的插值。文档:PHP 字符串 - Nowdoc

于 2013-05-17T04:16:24.437 回答
1

客户端的 PHP 配置是否在 Windows 服务器上运行?如果是这样,您应该能够通过将 .ini 文件添加到该应用程序的目录中来基于每个目录设置 PHP 配置。

例如,过去可以通过init_set()在运行时更改标签的使用ini_set('asp_tags', 0),但我不确定最新版本的 PHP 是否仍然允许这样做。

在 Apache 服务器上,您可以通过添加php_flag asp_tags Off到 .htaccess 文件来更改设置

我现在无法测试任何这些,但希望这会给你一个开始的地方。

于 2013-02-04T19:53:49.847 回答