【发布时间】:2018-03-04 00:53:57
【问题描述】:
我无法弄清楚这一点,也不是我编码以太的强项。
截至目前,它只会打印第一人称和时间戳,而不是其他任何内容。
<table cellpadding="0" cellspacing="0" width="100%">
<tr><td></td></tr>
<?php
include '../connection.php';
$sql = "SELECT *
FROM messagebox
INNER JOIN person
ON messagebox.sid = person.sid
ORDER BY messagebox.id DESC
LIMIT 20
";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
if ($switch=='1')
{
echo "<tr bgcolor=\"#FFFFFF\">";
$switch='0';
}
else
{
echo "<tr bgcolor=\"#F9F9F9\">";
$switch='1';
}
$elfstring = utf8_encode($row['shout']);
function smiley($elfstring) {
$elfstring = ereg_replace(":)","<img src=!.png alt=\"!\" >", $elfstring);
$elfstring = ereg_replace(":(","<img src=laugh.gif alt=\":D\" >", $elfstring);
$elfstring = ereg_replace(":p","<img src=tongue.gif alt=\":p\" >", $elfstring);
return $elfstrings;
}
$messages = smiley($elfstring);
echo "";
echo "<td width=\"100\" valign=\"top\"><strong>" . $row['name'] . "</strong></td>";
echo "<td width=\"100\" valign=\"top\">" . "(" . $row['place'] .")</td>";
echo "<td width=\"70\" valign=\"top\">" . "" . date('H:i:s',strtotime ($row['timestamp'])) ."</td>";
echo "<td valign=\"top\">" . smiley($elfstrings) . "</td>";
echo "</tr>";
}
?>
<tr>
<td>
</td>
</tr>
</table>
我知道此代码的某些部分已被弃用,但使用此代码的服务器很旧且不是最新的。
提前感谢您的帮助。
【问题讨论】:
-
ereg_ 函数在很久以前就被弃用了。如果您需要使用正则表达式,请改用 preg_ 函数。但是在这里你没有理由使用正则表达式,因为你只想替换静态搜索字符串 - 所以 str_replace 就可以了。
-
您确定使用该精确查询的结果不止一个?
-
它应该从消息框打印 20 行,现在它打印 1 并且消息没有回显。
-
不确定我是否关注你...
-
笑脸函数中的变量称为“elfstring”。但是您正在返回“elfstrings”(注意末尾的 S)。 elfstrings 变量不存在,因此您的函数不返回任何内容
标签: php regex function ereg-replace