您现在的位置: 365建站网 > 建站教程 > 微信公众平台开发 > 24.8.1

24.8.1

此节有 244 人学习过     参与评论

8.4姓名算命
算命是一种利用个人切身资讯,例如脸与手的纹路,出生八字、姓名笔划等配合五行和八卦来预测或判断命运吉凶福祸的行为。姓名算命根据姓名的笔画数以及一定规则数理关系,运用阴阳五行相生相克的道理,来观察预测姓名的吉凶好坏。本节介绍如何在微信中实现姓名算命。
8.4.1数据获取
姓名测试打分手机版网站提供姓名测试服务,地址为
http://m.1518.com/
经过试验与分析,其实际查询接口地址如下:
> hhttp://m.1518.com/xingming_view.PHP?word=%D5%C5%C8%FD&submit1=%C8%B7%B6%A8&FrontType=1

该接口各参数意义如表8-2所示:

表8-2 姓名测试接口参数
上述接口在浏览器中打开如图8-4所示:

图8-4 姓名测试
查看该网页源代码,内容部分代码显示如下:

张三

得分:51分
(评分由数理文化得出,仅供娱乐参考)
天格: 人格: 地格:
外格:大凶 总格:
概述:
张三的姓名三才配置为:木火火(平)
它具有如下数理诱导力,据此会对人生产生一定的影响。
得顺调成功发展,但有缺乏耐久力的缺点,或依靠性太强,招失败,有陷入失意之兆。  
总论:
虽有成功运, 但不甘寂寞,忍耐力不够,容易一意孤行,陷入孤军奋斗,如能修身养性,定能成功顺调。名利双利,若天运五行属水,青年时代事业难成又逢灾,老运亦欠佳。
性格:
外表乐观而豪爽,交际应酬有一套,人缘又好,但个性喜怒无常,感情易热易冷,个性急燥,容易意气用事。
可以看到,事件内容都放置在div区块下的dl标签中。我们可以通过循环遍历的方式将相应数据取出来。 8.4.2代码实现 我们使用simple_HTML_dom来抓取所需要的页面,相应代码如下:
1 function getFortuneInfo($keyword)
 2 {
 3     if ($keyword == ""){
 4         return "请发送算命+人名,例如“算命张三”";
 5     }
 6     if ((strlen($keyword) < 6) || (strlen($keyword) > 12)){
 7         return "人名长度为2到4个汉字";
 8     }
 9     try {
10         include('simple_html_dom.php');
11         $url = "http://m.1518.com/xingming_view.php?word=".urlencode(mb_convert_encoding($keyword, 'gb2312', 'utf-8'))."&submit1=%C8%B7%B6%A8&FrontType=1";
12         $html_fotune = file_get_html($url);
13         if (!isset($html_fotune)){
14             $html_fotune->clear();
15             return "程序检索出错!\n如果经常这样,请联系方倍工作室。";
16         }
17         $infomation = "";
18         foreach($html_fotune->find('div[id="detail"] dl') as $item) {
19             $curText = $item->plaintext;
20             $curText = preg_replace('/\s{2,}/i', ' ', $curText);
21             $curText = preg_replace('/\t{2,}/i', ' ', $curText);
22             $curText = preg_replace('/:\s/i', ':', $curText);
23             $infomation .= trim($curText)."\n";
24             if (strlen($infomation) > 2000){break;}
25         }
26         $html_fotune->clear();
27         $infomation = str_replace("\r\n", "\n", $infomation);
28         $infomation = str_replace("天格", "\n天格", $infomation);
29         $infomation = str_replace(" ", "", $infomation);
30         return trim($infomation);
31     }catch (Exception $e){
32 
33     }
34 }

上述代码解读如下:
第3行~第8行:判断姓名是否为空以及长度值。
第10行:引用HTML解析器库文件。
第11行:定义要访问的网址URL。使用函数mb_convert_encoding()将“张三”从UTF-8编码转换为GB2312编码,再将字符串以URL编码。
第12行:从页面地址中创建文档对象模型。
第13行~第16行:判断模型是否创建成功。
第17行:定义变量,用于保存最终返回内容。
第18行~第25行:查找id为"detail"的div元素,并在该元素下找dl元素,符合这样条件的均为解析内容,通过循环遍历的方式来获取,取其纯文本内容。并且使用正则表达式替换掉空格等内容。最后,判断长度是否超过2000,超过以后就不再继续获取而退出了。
第26行:清理文档对象,释放资源。
第27行~第29行:使用字符串替换等方式,继续删除空格等内容。
第30行:返回文本消息。
姓名算命的实现效果如图8-5所示:

图8-5 姓名算命

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (244人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------
微信公众平台开发目录