微信开发Emoji表情的实例教程

Y2J
Lepaskan: 2017-05-13 14:36:16
asal
3303 orang telah melayarinya

一 什么是Emoji  

emoji就是表情符号;词义来自日语(えもじ,e-moji,moji在日语中的含义是字符)
表情符号现已普遍应用于手机短信和网络聊天软件。
emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情。

在国内的微信和微信中也被采用。

Emoji 全编码表:
punchdrunker.github.com/iOSEmoji/table_html/flower.html

code.iamcal.com/php/emoji/

<?php    include(&#39;emoji.php&#39;);    # browser sniffing tells us that a docomo phone
    # submitted this text

    $clean_text = emoji_docomo_to_unified($_POST[message]);    ...    # now we want to show it in a desktop browser

    $html = emoji_unified_to_html($clean_text);?>
Salin selepas log masuk

回复代码如下所示:

<?php/*
    方倍工作室 http://www.fangbei.org/
    CopyRight 2015 All Rights Reserved*/define("TOKEN", "weixin");$wechatObj = new wechatCallbackapiTest();if (!isset($_GET[&#39;echostr&#39;])) {    $wechatObj->responseMsg();
}else{    $wechatObj->valid();
}class wechatCallbackapiTest
{    //验证签名
    public function valid()
    {        $echoStr = $_GET["echostr"];        $signature = $_GET["signature"];        $timestamp = $_GET["timestamp"];        $nonce = $_GET["nonce"];        $token = TOKEN;        $tmpArr = array($token, $timestamp, $nonce);        sort($tmpArr, SORT_STRING);        $tmpStr = implode($tmpArr);        $tmpStr = sha1($tmpStr);        if($tmpStr == $signature){            header(&#39;content-type:text&#39;);            echo $echoStr;            exit;
        }
    }    //响应消息
    public function responseMsg()
    {        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];        if (!empty($postStr)){            $this->logger("R \r\n".$postStr);            $postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);            $RX_TYPE = trim($postObj->MsgType);         
            
            //消息类型分离
            switch ($RX_TYPE)
            {                case "event":                    $result = $this->receiveEvent($postObj);                    break;                case "text":                    $result = $this->receiveText($postObj);                    break;               
                default:                    $result = "unknown msg type: ".$RX_TYPE;                    break;
            }            $this->logger("T \r\n".$result);            echo $result;
        }else {            echo "";            exit;
        }
    }    //接收事件消息
    private function receiveEvent($object)
    {        $content = "";        switch ($object->Event)
        {            case "subscribe":                $content = "欢迎关注方倍工作室 ";                break;            case "unsubscribe":                $content = "取消关注";                break;            case "CLICK":                switch ($object->EventKey)
                {                    case "COMPANY":                        $content = array();                        $content[] = array("Title"=>"方倍工作室", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");                        break;                    default:                        $content = "点击菜单:".$object->EventKey;                        break;
                }                break;            default:                $content = "receive a new event: ".$object->Event;                break;
        }        if(is_array($content)){            if (isset($content[0][&#39;PicUrl&#39;])){                $result = $this->transmitNews($object, $content);
            }else if (isset($content[&#39;MusicUrl&#39;])){                $result = $this->transmitMusic($object, $content);
            }
        }else{            $result = $this->transmitText($object, $content);
        }        return $result;
    }    //接收文本消息
    private function receiveText($object)
    {        $keyword = trim($object->Content);        //多客服人工回复模式
        if (strstr($keyword, "请问在吗") || strstr($keyword, "在线客服")){            $result = $this->transmitService($object);            return $result;
        }        //自动回复模式
        if (strstr($keyword, "文本")){            $content = "这是个文本消息";
        }else if (strstr($keyword, "表情")){            $content = "中国:".$this->bytes_to_emoji(0x1F1E8).$this->bytes_to_emoji(0x1F1F3)."\n仙人掌:".$this->bytes_to_emoji(0x1F335);
        }else if (strstr($keyword, "单图文")){            $content = array();            $content[] = array("Title"=>"单图文标题",  "Description"=>"单图文内容", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
        }else if (strstr($keyword, "图文") || strstr($keyword, "多图文")){            $content = array();            $content[] = array("Title"=>"多图文1标题", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");            $content[] = array("Title"=>"多图文2标题", "Description"=>"", "PicUrl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");            $content[] = array("Title"=>"多图文3标题", "Description"=>"", "PicUrl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");
        }else if (strstr($keyword, "音乐")){            $content = array();            $content = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3", "HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3"); 
        }else{            $content = date("Y-m-d H:i:s",time())."\nOpenID:".$object->FromUserName."\n技术支持 方倍工作室";            // $content = "";        }        if(is_array($content)){            if (isset($content[0])){                $result = $this->transmitNews($object, $content);
            }else if (isset($content[&#39;MusicUrl&#39;])){                $result = $this->transmitMusic($object, $content);
            }
        }else{            $result = $this->transmitText($object, $content);
        }        return $result;
    }    //回复文本消息
    private function transmitText($object, $content)
    {        if (!isset($content) || empty($content)){            return "";
        }        $xmlTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[%s]]></Content>
</xml>";        $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), $content);        return $result;
    }    //回复图文消息
    private function transmitNews($object, $newsArray)
    {        if(!is_array($newsArray)){            return "";
        }        $itemTpl = "        <item>
            <Title><![CDATA[%s]]></Title>
            <Description><![CDATA[%s]]></Description>
            <PicUrl><![CDATA[%s]]></PicUrl>
            <Url><![CDATA[%s]]></Url>
        </item>";        $item_str = "";        foreach ($newsArray as $item){            $item_str .= sprintf($itemTpl, $item[&#39;Title&#39;], $item[&#39;Description&#39;], $item[&#39;PicUrl&#39;], $item[&#39;Url&#39;]);
        }        $xmlTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[news]]></MsgType>
    <ArticleCount>%s</ArticleCount>
    <Articles>$item_str    </Articles>
</xml>";        $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));        return $result;
    }    //回复音乐消息
    private function transmitMusic($object, $musicArray)
    {        if(!is_array($musicArray)){            return "";
        }        $itemTpl = "<Music>
        <Title><![CDATA[%s]]></Title>
        <Description><![CDATA[%s]]></Description>
        <MusicUrl><![CDATA[%s]]></MusicUrl>
        <HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
    </Music>";        $item_str = sprintf($itemTpl, $musicArray[&#39;Title&#39;], $musicArray[&#39;Description&#39;], $musicArray[&#39;MusicUrl&#39;], $musicArray[&#39;HQMusicUrl&#39;]);        $xmlTpl = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[music]]></MsgType>    $item_str</xml>";        $result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());        return $result;
    }    //字节转Emoji表情
    function bytes_to_emoji($cp)
    {        if ($cp > 0x10000){       # 4 bytes
            return chr(0xF0 | (($cp & 0x1C0000) >> 18)).chr(0x80 | (($cp & 0x3F000) >> 12)).chr(0x80 | (($cp & 0xFC0) >> 6)).chr(0x80 | ($cp & 0x3F));
        }else if ($cp > 0x800){   # 3 bytes
            return chr(0xE0 | (($cp & 0xF000) >> 12)).chr(0x80 | (($cp & 0xFC0) >> 6)).chr(0x80 | ($cp & 0x3F));
        }else if ($cp > 0x80){    # 2 bytes
            return chr(0xC0 | (($cp & 0x7C0) >> 6)).chr(0x80 | ($cp & 0x3F));
        }else{                    # 1 byte
            return chr($cp);
        }
    }    //日志记录
    private function logger($log_content)
    {        if(isset($_SERVER[&#39;HTTP_APPNAME&#39;])){   //SAE
            sae_set_display_errors(false);
            sae_debug($log_content);
            sae_set_display_errors(true);
        }else if($_SERVER[&#39;REMOTE_ADDR&#39;] != "127.0.0.1"){ //LOCAL
            $max_size = 1000000;            $log_filename = "log.xml";            if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}            file_put_contents($log_filename, date(&#39;Y-m-d H:i:s&#39;)." ".$log_content."\r\n", FILE_APPEND);
        }
    }
}?>
Salin selepas log masuk

【相关推荐】

 1. 特别推荐“php程序员工具箱”V0.1版本下载

2. 微信公众号平台源码下载

3. 阿狸子订单系统源码下载

Atas ialah kandungan terperinci 微信开发Emoji表情的实例教程. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan