Maison > Applet WeChat > Développement WeChat > le corps du texte

Exemple de tutoriel pour développer des expressions Emoji sur WeChat

Y2J
Libérer: 2017-05-13 14:36:16
original
3285 Les gens l'ont consulté

Qu'est-ce qu'Emoji ?

Emoji est une émoticône ; la signification du mot vient du japonais (えもじ, e-moji, moji signifie caractères en japonais)
Les émojis sont désormais couramment utilisés dans les textes sur les téléphones portables. messages et logiciels de chat en ligne.
Les émoticônes Emoji sont déjà une expression très populaire utilisée dans les messages texte sur les téléphones portables étrangers.

est également utilisé dans WeChat et WeChat nationaux.

Tableau de codage complet des 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);?>
Copier après la connexion

Le code de réponse est le suivant :

<?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);
        }
    }
}?>
Copier après la connexion

[Recommandations associées]

1. Recommandation spéciale  : Téléchargement de la version V0.1 de "php Programmer Toolbox"

2 Téléchargement du code source de la plateforme de compte public WeChat

. 3. Téléchargement du code source du système de commande Alizi

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!