2011-08-10 17 views
0

これはかなり説明が難しいので、私はできるだけ年代順に話をし、質問で終わりようにします。だから、私が何をしているのか、話は1つあります:)。str_replace()関数と複数の変数?

primary_headline,primary_subline,secondary_headlineおよびsecondary_subtextという名前の4つのテキストコンテナを持つテーマテンプレートがあります。各コンテナのコンテンツはecho($container_name)からです。

各コンテナは、それが自分の時々の変数が含まれている記事・ユーザーがフォームからにコンテンツを作成した変数、$container_name、内容$city_name生データとして$ref_name(すなわち「こんにちは、私は$のCITY_NAMEから」)、などのしています$city_name$ref_nameには、引数としての値が割り当てられています。$city_name = Dallas$ref_name = Facebookのようになります。

もともと、私は私だけsecondary_subtextコンテナ内$city_name$ref_nameを使用できるようにユーザーを望んでいたことを信じて、私も最初の場所で$city_name OR $ref_nameユーザーの選択を使用するオプションを作るつもりでしたしかし、私は今、すべての4つのコンテナの変数(例えば$secondary_subtext)間$city_name$ref_nameを許可したいが、両方を選択することができませんでした

を - (彼らは1、または他の、またはnoneを選択する必要があると思います。

私の質問は、どうすればdoinに行くのですか?それは可能な限り簡単な方法で?

はここで良い測定のための私の古いコードです:

if($geo_text == "enable") { 
    $geo_init = include("inc/geo_text.php"); 
    $secondary_headline = str_replace('$city_name', $city_name, $_POST['secondary_headline']); // $_POST data from user 
} else($ref_text == "enable") { 
    $ref_init = include("inc/ref_text.php"); 
    $secondary_headline = str_replace('$ref_name', $ref_name, $_POST['secondary_headline']); // $_POST data from user 
} else { $secondary_headline = $_POST['secondary_headline']; } 

すべてのコメント/解答など非常に大幅に高く評価されます:)!

答えて

0
$placeholders = array('city_name','ref_name'); 
$include_mapper('geo_text' => 'inc/geo_text.php','ref_text'=>'inc/ref_text.php'); 
$containers = array('first_headline','scondary_headline'); 

$found = 0; 
foreach ($include_mapper as $map => $include){ 
    if ($$map == "enable"){ 
     include ($include_mapper[$map]); 
     foreach ($container as $container){ 
      foreach ($placeholders as $placeholder){ 
       $$container = str_replace('$'.$placeholder, $$placeholder, $_POST[$container]; 
      } 
     } 
     $found = 1; 
     break; 
    } 
} 
if (!$found){ 
    foreach ($container as $container){ 
     $$container = $_POST[$container]; 
    } 
} 
+0

入力いただきありがとうございます。他の人によると、これは私が必要とするものに合っていますが、私にとっては少し複雑です(私は "重複"の質問に投稿した行数を減らしてすでにコード化しています)。 – Avicinnian