2011-08-03 13 views
1

から変数定義を割り当てるのは、私はこれらの行含むファイル「English.txt」があるとしましょう:PHPは文字列

$_LANG["accountinfo"] = "Account Information"; 
$_LANG["accountstats"] = "Account Statistics"; 

:ファイルの拡張子が.txtであると私は変更に行うことができますはありませんがそれ。 PHPタグは開かず(<?php)、何かがあります。これらの行、ピリオドはです。

これらの行から実際に$_LANG配列を抽出して宣言する必要があります。それ、どうやったら出来るの?単純にファイルをINGのincludeは、すべての行をエコーので、私は、私はその文字列にevalを呼び出す場合、私はsyntax error, unexpected $endを取得し、今

ob_start(); 
include '/path/to/English.txt'; 
$str = ob_get_clean(); 

を行います。何か案は?

ありがとうございました。

+0

このように予期しない終了が発生すると、おそらくファイルに終端のない文字列があることを意味します。 –

+0

引用符で囲まれた2つの単語(「accountinfo」、「Account Information」など)を解析し、配列に格納する各行は、使用できるもう1つのソリューションだと思います。 PHPファイルではないことを示すファイルは含めることはできません。 – user482594

+0

少なくとも私はこの2つのラインでうまくいくようです。 –

答えて

1
eval(file_get_contents('English.txt')); 

ただし、NOBODYがEnglish.txtを変更できることを確認してください。危険です。

+0

そのファイルが言語ファイルであり、私を信頼してください、私は確かにこの残虐行為の著者ではありません!私はちょうどそれを使用する必要があります...とにかく。私はなぜこれが動作し、出力バッファリングではないのか分かりませんが、ありがとう! –

1

まず、includeの代わりにfile_get_contentsを出力バッファリングに使用する必要があります。 <?phpタグが含まれていないため、スクリプトプロセッサを使用して実行する必要はありません。

私のテストでは完全に次のような作品:コメントの一つとして

<?php 
$contents = file_get_contents("English.txt"); 
eval($contents); 
var_dump($_LANG); 

は、あなたがエラーを取得するまだ上記とを行う場合は、あなたのファイルはが正確に/だけ含まれていないし、言いましたそれらの行。ファイルが実際に構文に準拠していることを確認してください。

前述したように、最後の手段としてevalのみを使用し、のみと書いてください。言い換えれば、それは外界によって編集可能であってはならない。

+0

+1同じソリューション –