用回声行中的笑脸替换字符
Replacing characters with smileys from echoed row
我想不通,这不是我编写以太坊的强项。
截至目前,它只会打印第一个人和时间戳,不会显示更多。
<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>
我知道这段代码的某些部分已被弃用,但使用它的服务器很旧而且不是最新的。
在此先感谢您的帮助。
- 您不能多次声明一个函数。将
function smiley(){
移到 while
循环之外。
- 您应该启用错误报告并监控您的错误日志。
- 你应该缩进每个控制块,这样你就可以很容易地分辨出块在哪里 end/start。
- 如果您不需要正则表达式/没有使用正则表达式,请不要使用正则表达式函数。
(
和 )
是特殊的正则表达式字符,会导致错误。使用 str_replace
因为无论如何您都在进行静态替换。
- 您可以将字符串括在
"
或 '
中,这样可以简化字符串构造,因为您不需要转义。
所以请结束你的剧本:
function smiley($elfstring) {
return str_replace(array(':)', ':(', ':p'),
array('<img src="!.png" alt="!" >', '<img src="laugh.gif" alt=":D" >', '<img src="tongue.gif" alt=":p" >'),
$elfstring);
}
我想不通,这不是我编写以太坊的强项。
截至目前,它只会打印第一个人和时间戳,不会显示更多。
<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>
我知道这段代码的某些部分已被弃用,但使用它的服务器很旧而且不是最新的。
在此先感谢您的帮助。
- 您不能多次声明一个函数。将
function smiley(){
移到while
循环之外。 - 您应该启用错误报告并监控您的错误日志。
- 你应该缩进每个控制块,这样你就可以很容易地分辨出块在哪里 end/start。
- 如果您不需要正则表达式/没有使用正则表达式,请不要使用正则表达式函数。
(
和)
是特殊的正则表达式字符,会导致错误。使用str_replace
因为无论如何您都在进行静态替换。 - 您可以将字符串括在
"
或'
中,这样可以简化字符串构造,因为您不需要转义。
所以请结束你的剧本:
function smiley($elfstring) {
return str_replace(array(':)', ':(', ':p'),
array('<img src="!.png" alt="!" >', '<img src="laugh.gif" alt=":D" >', '<img src="tongue.gif" alt=":p" >'),
$elfstring);
}