2015-11-04 73 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