0

次の形式の情報を含む構成ファイルがあります。

define("FTP_USERNAME","583hdsljf");
define("FTP_PASSWORD","******");
define("FTP_FOLDER1","greatfolder");
define("FTP_FOLDER2","greatfolder");

通常、テンプレートの値を置き換えるときにstr_replace()を使用しますが、それを行うときに何を置き換えるかを知る必要があります(例:[REPLACE_THIS_WITH_FTP_USERNAME])。この場合、上記の値はすべて不明であり、新しい値に置き換えたい場合は異なるため、これを行うことはできません。

助言がありますか?

注:構成ファイルの値の一部は同じである可能性があります。

4

3 に答える 3

2
$content = preg_replace('/(define\("FTP_USERNAME",")[^"]+("\);)
/', '$1new username$2', $content);

ただし、構成ファイルには JSON などの標準化された形式を使用することを強くお勧めします。上記の正規表現は機能しますが、誰かが手動でファイルを編集し、たとえば二重引用符の代わりに単一引用符を使用するとすぐに壊れます。また、エスケープされた引用符を含む文字列でも壊れます。

于 2012-04-24T07:40:05.867 に答える
0

以下のように preg_replace を使用できます...

$str='
define("FTP_USERNAME","583hdsljf");
define("FTP_PASSWORD","******");
';
$strval='NEW VALUE';
$str=preg_replace('/FTP_USERNAME","(.*)"/','FTP_USERNAME","'.$strval.'"',$str);
echo $str;
于 2012-04-24T07:40:00.590 に答える
-2

ファイルを解析し、各行を正規表現と照合します。

例えば、

$line = 'define("hello", "hi")';
preg_match('/define\(\s*[\'"](.*)[\'"]\s*,\s*[\'"](.*)[\'"]\s*\)/', $line, $matches);

のセットを提供する必要があります

Array
(
    [0] => define("hello", "hi")
    [1] => hello
    [2] => hi
)

次に、キーを $matches[1] と照合し、行 (または式) を新しいものに交換します!

于 2012-04-24T07:38:57.743 に答える