0

基本的に、私が達成したいのは、動的に{SOME_TAG}「テキスト」に置き換えることです。
私のアイデアは、のようなすべてのタグを読み取り{SOME_TAG}、それらを配列に入れることでした。
次に、配列キーをのような変数に変換し$some_tag、それらを配列に入れます。

だから、これは私がどこまで得たかです:

//Some code goes here
$some_tag = "Is defined somewhere else.";
$different_tag = 1 + $something;
Some text {SOME_TAG} appears in different file, which contents has been read earlier.
//Some code goes here 

preg_match_all('/{\w+}/', $strings, $search);
$search = str_replace(str_split('{}'),"",$search[0]);
$search = array_change_key_case( array_flip($search), CASE_LOWER);
...some code missing here, which I cant figure out.

配列の置換は次のようになります

$replace = array($some_tag, $different_tag);
//Then comes replacing code and output blah blah blah..

$replace配列に応じて動的に変数を配列に含めるにはどうすればよい$searchですか?

4

2 に答える 2

5

次のようなものはありませんか。

<?php

$replace = array(
  '{TAG_1}' => 'hello',
  '{TAG_2}' => 'world',
  '{TAG_3}' => '!'
);

$myString = '{TAG_1} {TAG_2}{TAG_3}{TAG_3}';

echo str_replace(array_keys($replace), array_values($replace), $myString);
于 2013-03-15T13:11:21.187 に答える
1

私が正しく理解している場合:

動的な情報を入力できる置換可能な領域を表すために、{TAGS}を使用して、カスタマイズ可能なドキュメントを作成しようとしています。{TAGS}を動的情報に置き換えているある時点で、動的情報を自動生成された基本変数名に$tagsとして格納する必要があります。

これらのタグを完全に配列キーとして使用する代わりに、これらのタグを基本変数に変換する理由がわかりません。これはセキュリティまたは機能の穴を表していることを指摘したいと思います。誰かが{REPLACE}をドキュメントのタグとして挿入するとどうなりますか?置換配列は動的データで上書きされ、プログラム全体が崩壊します。それか、replace配列全体が{REPLACE}にダンプされ、おそらくデータを入れたくない非常に乱雑なドキュメントになります。おそらくあなたはこれに対処しました-私はここですべての文脈を持っているわけではありません-しかし私は危険因子を指摘したいと思いました。

より良い解決策としては、$ replace配列を直接使用するのではなく、$ tagsを使用して対処する必要がある場合を除いて、@Emissaryの回答が好きです。

于 2013-03-15T13:18:09.700 に答える