2011-08-10 44 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