3

ページにJavascriptを埋め込むPHPファイルに問題があります。JSは、出力にASPスタイルのタグ()を使用するアンダースコアテンプレートエンジンを使用してい<% ... %>ます。

クライアントのPHP構成でASPスタイルのタグが有効になっているため、ファイルの構文が壊れています。

ファイルの先頭に追加できるディレクティブや、PHPプロセッサにこれらのタグを無視させるその他のトリックはありますか?私は特にphp.iniを変更せずにこれを行う方法を探しています。しかし、それが唯一の方法である場合は、私に知らせてください。

4

3 に答える 3

4

この.htaccessファイルを試してください:

php_flag asp_tags off

また、1つのファイルのaspタグを無効にするだけの場合は、次のルールを使用します。

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

クライアントのPHP構成はWindowsサーバーで実行されていますか?その場合は、そのアプリケーションのディレクトリに.iniファイルを追加することで、ディレクトリごとにPHP構成を設定できるはずです。

init_set()たとえば、実行時にを介してタグの使用を変更することは可能ini_set('asp_tags', 0)でしたが、最新バージョンのPHPでまだこれが許可されているかどうかはわかりません。

php_flag asp_tags OffApacheサーバーでは、.htaccessファイルに追加することで設定を変更できる場合があります

現在、これをテストすることはできませんが、これで開始できる場所が得られることを願っています。

于 2013-02-04T19:53:49.847 に答える
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の最初と最後の空白行には、次の2つの目的があります。

  • 'javascriptの終了引用符()を誤ってエスケープするのを防ぎます
  • インデントと改行が、HEREDOCラッパーを追加しない場合とまったく同じになるようにします。

警告

HEREDOCタグはPHPの二重引用符()文字列と同じ方法で補間"され、変数が結果のファイルに出力されるため、これは実際のPHPを囲むASPタグをエスケープするのに適していません。ドキュメント:PHP文字列-変数の解析

サーバー環境を制御でき、PHP> 5.3に依存できる場合は、NOWDOCを使用してこの警告を完全に回避できます。NOWDOCは、識別子を一重引用符で囲むことでHEREDOCと区別され、囲まれたテキスト内でのPHP変数の補間を防ぎます。ドキュメント:PHP文字列-Nowdoc

于 2013-05-17T04:16:24.437 に答える