php201534,PHP设计聊天室步步通<4>

PHP设计聊天室步步通<4>推荐查看本文HTML版本

表情和动作

表情和动作极大的丰富了聊天的乐趣,一般的聊天室主要通过2种方法发送

(1) 按钮菜单的方法

通过在一个固定的下拉菜单里面进行选择,找到自己满意的表情,然后选中,按发送按钮发出

(2) 通过手工输入代号

比如网易的以手工输入 //hello 代表欢迎的一段动作,以 //bye 代表再见的一段动作表情

我们这里介绍菜单的具体实现方法,手工输入的不用介绍了吧! 哈哈!除非你记不住那些...

1 下拉菜单选择表情动作的实现

为了扩充方便,我们制作了表情动作的数据文件,这样在以后扩充时将会非常方便.

表情动作文件的格式如下($split代表分割符):

//1234$split“1234567,我的朋友在哪里1234!!!!!”

//?$split很疑惑的看着对象...

//??$split抓呀抓,把头皮都抓破了,也没有想出个所以然来。

//???$split怎么回事?这到底是怎么回事

前面的//1234代表表情动作代码,分隔符后面的代表显示的表情动作注意其中的 对象 两个字将会在显示时替换成为发言对象的名字

这段代码用于把菜单选择的对应的表情动作代码写到发送栏里面

<script>

function changemote($newemote)

{

这段代码生成动态下来菜单

<select name="select" οnchange="changemote(this.options[this.selectedIndex].value)">

<option value="0" selected>动作</option>

<?

$emotemsg = file($emotefilename);

for($i=0;$i<count($emotemsg);$i++)

{

$msg = split($split,$emotemsg[$i],99);

print("<option value=$msg[0]>$msg[1]</option>");

}

?>

</select>

这样就完成了从菜单选动作表情的过程

2 表情动作在发言处理程序里的处理过程

messagesend.php

<?

//读入表情动作文件

$emote3 = file($emotefilename);

$emote3number = count($emote3);

for($kk=0;$kk<$emote3number;$kk++)

{

//分割每个表情动作

$emote=split($split,chop($emote3[$kk]),99);

//如果发言内容等于表情动作

if($message == $emote[0])

{

//替换表情动作里面的 对象 为实际的聊天对象名字

$emote[1]=ereg_replace("对象","<font color=red>$talkto</font>",$emote[1]);

//发言内容改为动作表情的内容

$message = "<a href=javascript:parent.cs('$name') target=d>$name</a

>".$emote[1];

break;

}

}

?>

这样我们就实现了表情和动作,如果做一个自动添加动作表情的程序功能,更会增加聊天的娱乐性!

帖图

如果在聊天文字中能增加一些美丽的图片.......

图片代码的生成和表情动作一样,可以菜单选择也可以手工输入,这里只给出格式和代码,不再解释,请察看 表情于动作部分

1 文件格式

//$picturefilename

1$split咖啡色西服$splitxw20151.jpg$split

2$split黑色燕尾服$splitxw201534.jpg$split

编号+名称+图片名称+

2 程序

我的聊天室采用 ///gift+编号的方法显示图片,注意是三个反斜杠,区别于表情动作

<?

//判断发言的内容最前面的7个字符是否是 ///gift

if(substr($message,0,7) == "///gift")

{

//取得图片的编号,从第7个字符开始的2个字符(注意,字符从0开始编号)

$id = substr($message,7,2)-1;

//读入图片文件

$giftmsg = file($picturefilename);

//判断是否编号合法

if(($id >= 0) && ($id < count($giftmsg)) )

{

//生成图片的发言内容

$message ="<a href=javascript:parent.cs('$name') target=d><font col

or=$namecolor>$name</font></a>送给<a href=javascript:parent.cs('$talkt

o') target=d>$talkto</a>一个$gift[1]<img src='images/$gift[2]' width=6

0 height=60 border=0></font>";

//图片生成成功标志

$specialsign = 1;

}

}

密谈的实现

每个聊天室都提供了密谈功能,来为那些需要私下里进行交流的聊友提供方便,这里把我的聊天室实现私聊的方法介绍如下:

1 对发送信息的处理

每句私聊都要显示在自己和私聊对象的屏幕上,而其他人不能够看到.这里先对发言内容进行处理,然后再保存到发言文件里面!

//$split为分隔符号

messagesend.php

<?

//判断是否私聊发言

if($secret == "on")

//第一个标记为 secret 表示为私聊,后面的是聊天对象和自己的名字,保证这两个人能看到

$message = "<!--$splitsecret$split$talkto$split$name$split--><font c

olor=ff0000>密谈</font>$message";

}

else

{

//如果第一个标记为 open 表示公开,后面同样为对象和自己的名字

$message = "<!--$splitopen$split$talkto$split$name$split-->$message"

;

}

//然后保存到文件中

?>

2 显示私聊的方法

对每个新的发言读入后先进行处理判断,在主动刷新程序里面进行.

messageflush.php

<?

//分割发言内容

//如果发言不是密谈,或者私聊对象是自己,或者发送这句私聊的是自己,那就显示这句话,否则不显示

if( ($tempmessage[1] != "secret") || ($tempmessage[2] == $name) || (

$tempmessage[3] == $name) )

{

//显示私聊

print("parent.u.document.writeln("$message[0]");rn");

通过这种简单的方法,我们实现了私聊,

注意:

前面的保存文件处理时,对发言的判断文字前后有<!-- 和 -->这样在屏幕显示时就可以不用特殊处理了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值