2015-11-04 66 views
-3

我有模板DB例如客户选择此模板PHP str_replace函数在文本

$var = "It is a long established fact that a reader will be distracted by the 
this is [Dateiname] 
its your [Format] 
your alang [Ausgangssprache] 
your zlang [Zielsprache] 
readable content of a page when looking at its layout. The point of using Lorem Ipsum is"; 

需要更换[Dateiname] [Format] [Ausgangssprache] [Zielsprache]

我有3个职位,并在我的职位DB I有Dateiname,Format,Ausgangssprache,Zielsprache filds

当我选择那个filds例如

$result=""; 
for($i = 0; i<count($posts); $i++) 
    { 
     $replaceText = array(
          '[Dateiname]', 
          '[Format]', 
          '[Ausgangssprache]', 
          '[Zielsprache]', 
          ); 
     $replacePost = array(
          $filename[$i], 
          $filetype[$i], 
          $ausgangsspracheOne['de'], 
          $zeilspracheOne['de'], 
          ); 
     $result.= str_replace($needReplace, $replacePost, $var); 
    } 

我的结果显示我的这段文字,例如3次:

这是一个历史悠久的事实,读者将通过 [POST1] [titel1] [DESC1] [YEAR1]分心

这是一个长期建立的事实,读者将通过 [POST2] [titel2] [DESC2] [YEAR2]

分心

这是一个历史悠久的事实,读者将被分心的 [post3] [titel3] [desc3] [year3]

我需要像这样,有没有可能?

这是一个历史悠久的事实,读者将通过

[post1] 
[titel1] 
[desc1] 
[year1] 

[post2] 
[titel2] 
[desc2] 
[year2] 

[post3] 
[titel3] 
[desc3] 
[year3] 
+0

你为什么要用str_replace?需要吗? – davejal

+0

没有不需要 –

回答

0

不知道你真正想要的分心,但是你可以使用这样的事情? 如果你提供了更多的代码和更多的细节,我可以提供更好的解决方案。

$var = "It is a long established fact that a reader will be distracted by the"; 
echo $var . "<br>" 
$result=""; 
for($i = 0; i<count($posts); $i++) 
{ 
print $filename[$i] . " " .$filetype[$i] . " " . $ausgangsspracheOne['de']. " " .$zeilspracheOne['de']."<br>"; 

} 
+0

对于第一,我需要在文本FINDE这个 '[Dateiname] [格式] [Ausgangssprache] [Zielsprache]'变化 –

+0

后话可能您发布完整的脚本?我无法确定你不能做什么以及你想做什么。您想要查找的值必须来自您的数据库。 – davejal

+0

我有数据库中的文本模板,并在该文本中我有一些标签为例**我的名字是[姓名] **在[姓名]标签。我需要在该文本中找到此标签[名称]并将其替换为实际名称,例如** Andy ** –

1

你应该分开$var为应显示一次的部分和需要更换的每个条目的模板。

$var_before = "It is a long established fact that a reader will be distracted by the \n"; 
$var_template = "[Dateiname] 
[Format] 
[Ausgangssprache] 
[Zielsprache] 

"; 
$var_after = "readable content of a page when looking at its layout. The point of using Lorem Ipsum is"; 

然后,您只能在循环中使用$var_template

$result = $var_before; 
$replaceText = array(
        '[Dateiname]', 
        '[Format]', 
        '[Ausgangssprache]', 
        '[Zielsprache]', 
        ); 
for($i = 0; i<count($posts); $i++) 
    { 
     $replacePost = array(
          $filename[$i], 
          $filetype[$i], 
          $ausgangsspracheOne['de'], 
          $zeilspracheOne['de'], 
          ); 
     $result .= str_replace($needReplace, $replacePost, $var_template); 
    } 
$result .= $var_after; 
+0

但是,如何查找$ var_before和$ var_after当我将此文本导入数据库? –

+0

您需要重新设计数据库,以便为重复模板和一次性前缀和后缀分隔字段。 – Barmar

+0

或者你可以把一个分隔符放到'$ var'中,告诉它重复的部分在哪里,并使用'explode()'来分隔它。 – Barmar