Php 以html格式在数组中显示数据库值

Php 以html格式在数组中显示数据库值,php,html,sql,Php,Html,Sql,我想通过数组将$view['time']值替换为%time%来显示数据库值 范例 如果$view['time']='8;下午三时;当我写%time%这里显示晚上8点 它适用于单个原始数据,但当我尝试在这里按循环显示值时,这里仅显示第一个值是我的代码,请检查并帮助我 <?php $msg=' <div class="pad9"> <img src="http://trickround.xtgem.com/files/licon.gif"/> <a

我想通过数组将
$view['time']
值替换为
%time%
来显示数据库值

范例

如果
$view['time']='8;下午三时;当我写
%time%
这里显示晚上8点

它适用于单个原始数据,但当我尝试在这里按循环显示值时,这里仅显示第一个值是我的代码,请检查并帮助我

<?php
$msg='
<div class="pad9">
    <img src="http://trickround.xtgem.com/files/licon.gif"/>
    <a href="%post-id%"> %post-title% </a>
    <br/>
    <div class="lined"> </div> 
    <font color="fuchsia">  </font>
    <font color="red">%time%</font>
</div>
<div class="lines"></div>';

$post1 = $conn->prepare('SELECT * FROM post WHERE id_user = :id order by id DESC LIMIT 10'); 

$post1->execute(array(':id' => '4')); 

while ($view = $post1->fetch(PDO::FETCH_ASSOC)) {
    $bbcode = array(
        '%post-title%' => htmlentities($view['title'], ENT_QUOTES, 'UTF-8'),
        '%post-messge%' => $view['message'],
        '%time%' => $view['time'],
        '%post-id%' => ''.$view['id'].'.html',
        '%post-url%' => ''.$view['url'].'.html'
    );

    $msg = str_replace(array_keys($bbcode), array_values($bbcode), $msg); 
    echo $msg;
}

您在每次迭代中都会覆盖原始字符串
$msg
。第一次迭代后,字符串
$msg
将包含第一次迭代的数据,其中所有占位符都已被替换

不要将结果存储在
$msg
中,只需直接在循环中回显结果即可

更改:

$msg = str_replace(array_keys($bbcode), array_values($bbcode), $msg); 
echo $msg;
只是:

echo str_replace(array_keys($bbcode), $bbcode, $msg); 

正如@mickmackusa指出的,第二个参数不需要使用
array\u values()
,因为
str\u replace()
只使用数组值。

请重写文本并格式化代码。在写问题时为自己节省时间,让我们更难阅读,这不是提问的适当方式。在写文本时,使用标点符号和换行符。在编码时,没有将所有内容都写在一行中的样式点,相反。可读性很重要。在这两种情况下,“然后我尝试显示结果,但失败”-如何失败?不替换占位符?替换错误的占位符?错误消息?我通过更清晰的方式编辑了我的问题。请参见我已投票重新打开,因为问题现在已经足够清楚了。谢谢,这很有效nice@Magnus您不需要调用
array\u values()
,键将被忽略。既然问题已经澄清,您可能想投票重新打开。@mickmackusa-关于
数组\u值()
的观点很好。完全错过了这个问题:-)我已经在9天前投票决定重新讨论这个问题了。我也是。上面说我再过9天就不能开门了。