2015-11-04 4 views
-3

У меня есть шаблоны в БД, например, клиент выбрать этот шаблон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 сообщения и мои посты БД у меня есть Dateiname,Format,Ausgangssprache,Zielsprache 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] [Год1]

это давно установленный факт, что читатель будет отвлекаться на [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

могли бы вы опубликовать полный сценарий? Я не могу понять, что вы не можете сделать и что вы хотите сделать. Значения, которые вы хотите найти, должны поступать из вашего db. – davejal

+0

У меня есть текстовые шаблоны в БД, и в этом тексте у меня есть некоторые теги, например ** Мое имя [Имя] ** Где [Имя] тег.Мне нужно найти в этом тексте этот тег [Name] и заменить его в реальном имени, например, ** 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, когда я получаю этот текст в DB? –

+0

Вам необходимо переконфигурировать базу данных, чтобы она имела отдельные поля для повторяющегося шаблона и одноразового префикса и суффикса. – Barmar

+0

Или вы можете поместить разделитель в '$ var', который сообщает ему, где находится повторный раздел, и используйте' explode() 'для его разделения. – Barmar