2009-09-23 9 views
5

私はphp.iniをPHPでテンプレート化しています。 CLI PHPスクリプトを使用して、テンプレートからhttpd.conf、apachectl、およびphp.iniを生成することによって、開発環境をセットアップするためのスクリプトがあります。残念ながら、php.iniの文字列は<?<?phpです(コメント内)。 phpが通常のPHPエスケープシーケンスとしてそれらを解釈しないように、何とかそれらをエスケープすることは可能ですか?リテラルをエスケープする<?phpおよび<? PHPスクリプトで

現在、私の回避策は、このように、文字列として出力する実際のPHPのエスケープシーケンスでそれらをラップすることです:

; This directive determines whether or not PHP will recognize code between 
; <?php echo "<? and ?>" ?> tags as PHP source which should be processed as such. It's been 
; recommended for several years that you not use the short tag "short cut" and 
; instead to use the full <?php echo "<?php and ?>" ?> tag combination. With the wide spread use 
; 

答えて

9

この:

<?php echo "<?php"; ?> 

ウィル出力:

<?php 
+0

作品。実際に '<? 'をエスケープする方法はまったくありません。 – rinogo

+1

それをする方法はありません。 – gahooa

0

速い&簡単な解決方法は、php.iniとコメント内のすべてを一意のマーカーで置き換えます。ファイルが解析された後は、一意のマーカーを対応するphpタグに置き換えるだけです。

1

<?php 
echo <<< EOF 
<?php echo "stuff inside php tag"; ?> 
EOF; 
?> 

を次のようにあなたが全体のiniファイル内のヒアドキュメントをラップすることができた出力がページでレンダリングが、ページのソースに表示されていない場合
か、タグ用のHTMLエンコーディングを使用することができます

&lt;?php echo 'this'; ?&gt; 

私は後であなたに良く合うと思います。
それが仕事をしなければ私はよく分かりませんASCIIコードを使うことができます

+2

"私が名前を知らないEOFタイプのもの" - > "Heredoc" – Charles

+0

出力がHTMLの場合にのみHTMLエンコーディングが機能します。それはphp.iniファイルではない – nohat

+0

はい私はそう思った。 – andho