php str_replace在文本中

时间:2015-11-04 22:52:01

标签: php str-replace

我在DB中有模板,例如客户端选择此模板

$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

当我选择那个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]

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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>";

 }