2011-08-10 43 views
0

這將很難解釋,所以我會盡量使它儘可能按時間順序排列,並以問題結束,以便任何需要相對深入瞭解我的人的人談論有一個:)。str_replace()函數和多個變量?

我有一個名爲primary_headlineprimary_sublinesecondary_headlinesecondary_subtext四個文本容器主題模板。每個容器的內容來自echo($container_name)

每個集裝箱都有它自己的變量,$container_name,哪些職位用戶從表單創建的內容,其內容有時包含變量$city_name$ref_name作爲原始數據(即「你好,我是從$ CITY_NAME」),作爲$city_name$ref_name已分配值,爲了參數,我們只是說$city_name = Dallas$ref_name = Facebook

本來,我認爲,我只希望用戶能夠使用$city_name$ref_namesecondary_subtext容器內,而我也打算讓使用$city_name OR $ref_name用戶的選擇擺在首位的選項(他們不得不選擇一個,或其他的,還是沒有 - 但不能同時選擇

不過,我現在想允許$city_name$ref_name所有四個容器變量($secondary_subtext例如)

所以,我的問題是,我該怎麼去做g以最簡單的方式?

這裏是我的好辦法舊代碼:

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