-1

我正在尝试在文本中使某个字符串变为粗体。我浏览了我的 php 书并在网上查看,但没有解决方案可以解决我的问题。变量$mapname$post_title变化是因为它们处于一个while循环中,可以很好地替换某些字符,例如这个:

$data_p = "SELECT * FROM posts WHERE verified='yes' ORDER BY (posvotes - negvotes) DESC $max"; 
$exec_p = $mysqli->query($data_p);
while($row = $exec_p->fetch_object())
{ 
$post_id = $row->post_id;
$maps = "SELECT name FROM maps WHERE id='$post_id'";
$getmaps = $mysqli->query($maps);
$mapname = $getmaps->fetch_object();
$post_title = preg_replace('/(Free )/',"<b>\\0</b>", $post_title);

但是当我尝试替换字符串时

$post_title = str_replace($mapname,'<b>'.$mapname.'</b>', $post_title);

我根本没有得到任何输出。关于我做错了什么的任何想法?当我禁用str_replacevar_dump 变量时,我总是得到正确的变量。
我在网上浏览了解决方案,该str_replace功能应该按照手册工作。

4

2 回答 2

2

你需要做类似的事情

$post_title = str_replace($mapname->columnName,'<b>'.$mapname->columnName.'</b>', $post_title);

或者你可以做这样的事情:

$mapname = $getmaps->mysqli_fetch_array();

然后尝试使用您的代码...

于 2013-05-14T20:56:07.030 回答
1

从您提供的代码来看,$mapname是一个对象,而不是一个字符串。你需要尝试这样的事情:$post_title = str_replace($mapname->name,'<b>'.$mapname->name.'</b>',$post_title);

于 2013-05-14T20:56:54.017 回答