首页
留言板
统计
友链
更多
壁纸
Search
1
开个贴长期收录温柔语录
901 阅读
2
QRspeed - 词库 - txt
870 阅读
3
API接口源码 - 漂流瓶 - 我们漂流瓶联系!
615 阅读
4
答案之书 - API源码 - PHP
489 阅读
5
点歌API源码-PHP
458 阅读
默认分类
分享
PHP
API
QRspeed
MySQL
每日一图
表情包
老少皆宜
台词语录
chat快捷编写
真的不是水
你就说有没有用吧
真是我写的
登录
/
注册
Search
标签搜索
PHP
Linux教程
学习真好
Python
教程
chat
Hot
API源码分享
我爱学习
String
接口
源码
MySQL
表情包
小豆泥
语录
Linux
开源
不是独家
这真的不是水
独角兽
累计撰写
36
篇文章
累计收到
195
条评论
首页
栏目
默认分类
分享
PHP
API
QRspeed
MySQL
每日一图
表情包
老少皆宜
台词语录
chat快捷编写
真的不是水
你就说有没有用吧
真是我写的
页面
留言板
统计
友链
壁纸
搜索到
13
篇与
的结果
2022-12-09
什么是markdown?markdown有什么用处?
什么是MarkdownMarkdown 是一种轻量级的「标记语言」,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。它由约翰·格鲁伯(John Gruber)创作,现在由一个叫做Daring Fireball的网站维护。Markdown的优势Markdown 的语法简洁明了、学习容易,而且功能比纯文本更强,因此有很多人用它写博客。它可以使普通文本内容具有一定的格式。Markdown 的兼容性很强,可以在 Linux、Windows、Mac OS X等操作系统上运行,并且支持多种标记语言,如 HTML、XML、LaTeX 等,可以将 Markdown 转换成多种格式的文档,如 HTML、PDF 等。Markdown的应用Markdown 可以用来写作,也可以用来排版,它的语法简单,可以让你专注于文字而不是排版。它可以用来写日记、撰写文章、撰写说明文档等等。Markdown 还可以用来编写博客,它可以让你更加专注于内容而不是排版,可以让你更快速地完成博客的撰写。总结Markdown 是一种轻量级的「标记语言」,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。它具有语法简洁明了、学习容易、兼容性强等优势,可以用来写作、排版、写日记、撰写文章、撰写说明文档、编写博客等等。
2022年12月09日
20 阅读
0 评论
0 点赞
2022-12-09
如何使用QQ快捷登录php-sdk
如何使用QQ快捷登录php-sdkQQ快捷登录php-sdk是一个用于实现QQ快捷登录的php库,可以让开发者快速实现QQ快捷登录功能。本文将介绍如何使用QQ快捷登录php-sdk。准备工作在使用QQ快捷登录php-sdk之前,需要先在QQ互联平台上注册应用,获取应用的appid和appkey。安装QQ快捷登录php-sdk可以通过composer安装,在composer.json文件中添加如下代码:"require": { "qq/qq-login-sdk": "dev-master" }然后执行composer install命令安装QQ快捷登录php-sdk。使用使用QQ快捷登录php-sdk非常简单,只需要几行代码就可以实现QQ快捷登录功能。首先,需要引入QQ快捷登录php-sdk:require_once 'vendor/qq/qq-login-sdk/qqLogin.php';然后,创建QQ快捷登录实例:$qqLogin = new qqLogin($appid, $appkey);接着,调用getAuthorizeURL方法获取授权地址:$authorizeURL = $qqLogin->getAuthorizeURL();最后,将用户重定向到授权地址:header('Location: ' . $authorizeURL);结语以上就是如何使用QQ快捷登录php-sdk的全部内容,希望本文能够帮助到大家。
2022年12月09日
10 阅读
0 评论
0 点赞
2022-05-06
每日一文 - PHP源码 - 对接 https://meiriyiwen.com/
{mtitle title="前言"/}前两天推荐了一个网站 传送门 感觉很不错 适合平时阅读一下然后发现 网站 中的内容是静态的,并不是通过JS渲染完成的,可以用PHP正则到内容。于是…{lamp/}{mtitle title="正文"/}### 众所周知file_get_contents()的速度很慢,所以在这里选择了curl。这里选择使用的是 教书先生 提供的几乎万能的 curl方法 ### 首先我们先用curl方法 访问出html<?php Header("content-type: application/json");//Header头部 避免输出文本被浏览器识别为html语言也可以是Header("content-type: text/json"); $data = teacher_curl("https://meiriyiwen.com/"); echo $data; >上面的代码输出为 <DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>给我未来的孩子 张梅 | 每日一文</title> <link rel="shortcut icon" href="http://yile-static-files.b0.upaiyun.com/meiriyiwen_com_favicon.ico" type="image/x-icon" /> <meta http-equiv="Pragma" content="no-cache" /> <meta content="爱阅读,每日一文,每天一篇精彩文章!" name="description"/> <meta name="Keywords" content="每日一文,每日一文网,meiriyiwen,每日一文网站,每日一文声音" /> <meta name="msapplication-task" content="name=随机文章;action-uri=https://meiriyiwen.com/random;icon-uri=https://meiriyiwen.com/favicon.ico" /> <meta name="msapplication-task" content="name=每日一文;action-uri=https://meiriyiwen.com;icon-uri=https://meiriyiwen.com/favicon.ico" /> <meta name="msapplication-task" content="name=声音-每日一文;action-uri=https://voice.meiriyiwen.com/;icon-uri=https://meiriyiwen.com/favicon.ico" /> <meta name="msapplication-task" content="name=投递文章;action-uri=https://meiriyiwen.com/index/add;icon-uri=https://meiriyiwen.com/favicon.ico" /> <meta name="msapplication-task" content="name=关于;action-uri=https://meiriyiwen.com/about;icon-uri=https://meiriyiwen.com/favicon.ico" /> <link rel="stylesheet" href="/style/2013style.css"/> <link rel="stylesheet" href="/style/bootstrap.css"/> <!--[if lte IE 8]> <link rel="stylesheet" href="/style/ie.css"/> <![endif]--> </head> <body> <div class="top_header"> <div class="nav"> <span class="meiri_text"><a href="http://meiriyiwen.com">每日一文</a></span> <span id="article_nav" class="voice_nav"><a href="http://meiriyiwen.com">文章</a></span> <span class="voice_nav"><a href="http://voice.meiriyiwen.com" target="_blank">声音</a></span> </div> <div class="user_help"> <!-- <a class="plus_article" href="/index/add" data-placement="bottom" rel="tooltip" data-original-title="投递文章"><img src="../images/plus.png"/></a> --> <iframe style="position:relative;top:5px;" class="add_num" width="63" height="24" frameborder="0" allowtransparency="true" marginwidth="0" marginheight="0" scrolling="no" border="0" src="https://widget.weibo.com/relationship/followbutton.php?language=zh_cn&width=63&height=24&uid=2085934591&style=1&btn=red&dpc=1"></iframe> </div> </div> <!--[if lte IE 8]> <div class="article_bg_top"></div> <![endif]--> <div id="article_show"> <!-- <a class="share_mail" href="#mail" data-toggle="modal" data-placement="bottom" rel="tooltip" data-original-title="发至邮箱"></a> --> <h1>给我未来的孩子</h1> <p class="article_author"><span>张梅</span></p> <div class="article_text"> <p>孩子,我首先希望你自始至终都是一个理想主义者。你可以是农民,可以是工程师,可以是演员,可以是流浪汉,但你必须是个理想主义者。 </p> <p>当你童年,我们讲英雄的故事给你听,并不是要你一定成为英雄,而是希望具有纯正的品格;当你少年,我们让你接触诗歌、绘画、音乐,是为了让你的心灵填满高尚的情趣。这些高尚的情趣会支撑你的一生,使你在最严酷的冬天也不会忘记玫瑰的芳香。理想会使人出众。 </p> <p>孩子,不要为自己的外形担忧。理想纯洁你的气质,而最美貌的女人也会因为庸俗而令人生厌。通向理想的道路往往不尽人意,而你亦会为此受尽磨难。但是,孩子,你尽管去争取,理想主义者的结局悲壮而决不可怜。 </p> <p>在那貌似坎坷的人生中,你会结识到许多智者和君子,你会见到许多旁人无法遇到的风景和奇迹。选择平庸虽稳妥,但绝无色彩。 </p> <p>不要为蝇头小利放弃自己的理想,不要为某种潮流而放弃自己的信念。物质世界的外表太过复杂,你要懂得如何去拒绝虚荣的诱惑。理想不是实惠的东西,它往往无法带给你尘世的享受。因此你必须习惯无人欣赏你,学会精神享受,学会与他人不同。 </p> <p>其次,孩子,我希望你是一个踏实的人。人生太过短促,而虚的东西又太多,你很容易眼花缭乱,最终一事无成。 </p> <p>如果你是一个美貌的女孩子,年轻的时候会有许多男性宠你,你得到的东西过于容易,这会使你流于浅薄和虚浮;如果你是一个极聪明的男孩,又会以为自己能够成就许多大事而流于轻佻。 </p> <p>记住,每个人的能力有限,我们活在世上做好一件事足矣。写好一本书,做好一个主妇。不要轻视平凡的人,不要投机取巧,不要攻击自己做不到的事。你长大后会知道,做好一件事太难,但绝不要放弃。 </p> <p>你要懂得和珍惜感情。不管男人女人,不管墙内墙外,相交一场实在不容易。交友的过程会有误会和摩擦,但你想一想,偌大世界,能有缘结伴而行的又有几人?你要明白朋友终会离去,生活中能有人伴你在身边,听你倾谈,倾谈给你听,你就应该感激。 </p> <p>要爱自己和爱他人,要懂自己和懂他人。你的心要如溪水般柔软,你的眼波要象春天般妩媚。你要会流泪,会孤身一人坐在黑暗中听伤感的音乐。你要懂得欣赏悲剧,悲剧能丰富你的心灵。 </p> <p>希望你不要媚俗。你是个独立的人,无人能抹杀你的独立性,除非你向世俗妥协。要学会欣赏真,要在重重面具之下看到真。 </p> <p>世上圆滑标准的人很多,但出类拔萃的人极少。而往往出类拔萃又隐藏在卑琐狂荡之下。在形式上,我们无法与既定的世俗争斗,而在内心,我们都是自己的国王。如果你的脸上出现谄媚的笑容,我将羞愧的掩脸而去。世俗许多东西虽耀眼却无价值,不要把自己置于大众的天平上,你会因此无所适从,人云亦云。 </p> <p>在具体的做人上,我希望你不要打断别人的谈话,不要娇气十足。你每天至少拿出两小时来读书,不要想着别人为你做些什么,而要想着怎么去帮助他人。 </p> <p>借他人的东西要还,不要随便接受别人的恩惠,要记住,别人的东西,再好也是别人的,自己的东西,再差也是自己的。 </p> <p>还有一件事,虽然做起来很难,但相当重要,这就是要有勇气正视自己的缺点。你会一年年的长大,你渐渐会遇到比你强,比你优秀的人,你会发现自己身上有许多你所厌恶的缺点。这会使你沮丧和自卑。你一定要正视它,不要躲避,要一点一点的加以改正。战胜自己比征服他人还要艰巨和有意义。 </p> <p>不管世界潮流如何变化,但人的优秀品质却是永恒的:正直,勇敢,独立。我希望你是一个优秀的人。</p> </div> </div> <div class="randomBox"> <a href="/random/iphone"> 随机一篇 </a> </div> <div class="header"> <a class="active" href="http://meiriyiwen.com">文章</a> <a href="http://voice.meiriyiwen.com">声音</a> </div> <div class="footer"> <a href="http://meiriyiwen.com/index/about">关于</a> <a href="https://me.alipay.com/jackhe" target="_blank" style="display:none;">赞助我们</a> <a href="mailto:contact@meiriyiwen.com?subject=手机版建议">建议</a> </div> <div class="footer-bottom"> meiriyiwen.com </div> <!--ta--> <script type="text/javascript" src="http://tajs.qq.com/stats?sId=12757038" charset="UTF-8"></script> <!--google--> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-45311166-1', 'meiriyiwen.com'); ga('send', 'pageview'); </script> <script type="text/javascript" src="http://dup.baidustatic.com/js/zm.js"></script> <div id="baidu_dup_1031558" style="text-align:center;"></div> <script type="text/javascript">(BAIDU_DUP=window.BAIDU_DUP||[]).push(['fillAsync','1031558','baidu_dup_1031558']);</script> </body> </html> 是html 并且是静态的并不是JS渲染。并且可以看到我们需要的文章内容在某div标签中。我们如何得到他?答案是正则,也就是preg_match或者preg_match_all在这里用的是 preg_match。 preg_match 函数用于执行一个正则表达式匹配,并在匹配到一次之后停止匹配,否则直到匹配内容的末端结束。 Ta的语法是 int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) Ta的正则匹配结果赋值在第三个参数上(如果有的话)。值得一提的是Ta的正则表达式也有定界符的我们开始正则$data返回的内容 preg_match('/<div class="article_text">([\s\S]*?)<\/div>/', $data, $content);//匹配我们需要的内容并赋值在$content上 print_r($content);//打印Ta 上面内容我们会得到 Array ( [0] => <div class="article_text"> <p>孩子,我首先希望你自始至终都是一个理想主义者。你可以是农民,可以是工程师,可以是演员,可以是流浪汉,但你必须是个理想主义者。 </p> <p>当你童年,我们讲英雄的故事给你听,并不是要你一定成为英雄,而是希望具有纯正的品格;当你少年,我们让你接触诗歌、绘画、音乐,是为了让你的心灵填满高尚的情趣。这些高尚的情趣会支撑你的一生,使你在最严酷的冬天也不会忘记玫瑰的芳香。理想会使人出众。 </p> <p>孩子,不要为自己的外形担忧。理想纯洁你的气质,而最美貌的女人也会因为庸俗而令人生厌。通向理想的道路往往不尽人意,而你亦会为此受尽磨难。但是,孩子,你尽管去争取,理想主义者的结局悲壮而决不可怜。 </p> <p>在那貌似坎坷的人生中,你会结识到许多智者和君子,你会见到许多旁人无法遇到的风景和奇迹。选择平庸虽稳妥,但绝无色彩。 </p> <p>不要为蝇头小利放弃自己的理想,不要为某种潮流而放弃自己的信念。物质世界的外表太过复杂,你要懂得如何去拒绝虚荣的诱惑。理想不是实惠的东西,它往往无法带给你尘世的享受。因此你必须习惯无人欣赏你,学会精神享受,学会与他人不同。 </p> <p>其次,孩子,我希望你是一个踏实的人。人生太过短促,而虚的东西又太多,你很容易眼花缭乱,最终一事无成。 </p> <p>如果你是一个美貌的女孩子,年轻的时候会有许多男性宠你,你得到的东西过于容易,这会使你流于浅薄和虚浮;如果你是一个极聪明的男孩,又会以为自己能够成就许多大事而流于轻佻。 </p> <p>记住,每个人的能力有限,我们活在世上做好一件事足矣。写好一本书,做好一个主妇。不要轻视平凡的人,不要投机取巧,不要攻击自己做不到的事。你长大后会知道,做好一件事太难,但绝不要放弃。 </p> <p>你要懂得和珍惜感情。不管男人女人,不管墙内墙外,相交一场实在不容易。交友的过程会有误会和摩擦,但你想一想,偌大世界,能有缘结伴而行的又有几人?你要明白朋友终会离去,生活中能有人伴你在身边,听你倾谈,倾谈给你听,你就应该感激。 </p> <p>要爱自己和爱他人,要懂自己和懂他人。你的心要如溪水般柔软,你的眼波要象春天般妩媚。你要会流泪,会孤身一人坐在黑暗中听伤感的音乐。你要懂得欣赏悲剧,悲剧能丰富你的心灵。 </p> <p>希望你不要媚俗。你是个独立的人,无人能抹杀你的独立性,除非你向世俗妥协。要学会欣赏真,要在重重面具之下看到真。 </p> <p>世上圆滑标准的人很多,但出类拔萃的人极少。而往往出类拔萃又隐藏在卑琐狂荡之下。在形式上,我们无法与既定的世俗争斗,而在内心,我们都是自己的国王。如果你的脸上出现谄媚的笑容,我将羞愧的掩脸而去。世俗许多东西虽耀眼却无价值,不要把自己置于大众的天平上,你会因此无所适从,人云亦云。 </p> <p>在具体的做人上,我希望你不要打断别人的谈话,不要娇气十足。你每天至少拿出两小时来读书,不要想着别人为你做些什么,而要想着怎么去帮助他人。 </p> <p>借他人的东西要还,不要随便接受别人的恩惠,要记住,别人的东西,再好也是别人的,自己的东西,再差也是自己的。 </p> <p>还有一件事,虽然做起来很难,但相当重要,这就是要有勇气正视自己的缺点。你会一年年的长大,你渐渐会遇到比你强,比你优秀的人,你会发现自己身上有许多你所厌恶的缺点。这会使你沮丧和自卑。你一定要正视它,不要躲避,要一点一点的加以改正。战胜自己比征服他人还要艰巨和有意义。 </p> <p>不管世界潮流如何变化,但人的优秀品质却是永恒的:正直,勇敢,独立。我希望你是一个优秀的人。</p> </div> [1] => <p>孩子,我首先希望你自始至终都是一个理想主义者。你可以是农民,可以是工程师,可以是演员,可以是流浪汉,但你必须是个理想主义者。 </p> <p>当你童年,我们讲英雄的故事给你听,并不是要你一定成为英雄,而是希望具有纯正的品格;当你少年,我们让你接触诗歌、绘画、音乐,是为了让你的心灵填满高尚的情趣。这些高尚的情趣会支撑你的一生,使你在最严酷的冬天也不会忘记玫瑰的芳香。理想会使人出众。 </p> <p>孩子,不要为自己的外形担忧。理想纯洁你的气质,而最美貌的女人也会因为庸俗而令人生厌。通向理想的道路往往不尽人意,而你亦会为此受尽磨难。但是,孩子,你尽管去争取,理想主义者的结局悲壮而决不可怜。 </p> <p>在那貌似坎坷的人生中,你会结识到许多智者和君子,你会见到许多旁人无法遇到的风景和奇迹。选择平庸虽稳妥,但绝无色彩。 </p> <p>不要为蝇头小利放弃自己的理想,不要为某种潮流而放弃自己的信念。物质世界的外表太过复杂,你要懂得如何去拒绝虚荣的诱惑。理想不是实惠的东西,它往往无法带给你尘世的享受。因此你必须习惯无人欣赏你,学会精神享受,学会与他人不同。 </p> <p>其次,孩子,我希望你是一个踏实的人。人生太过短促,而虚的东西又太多,你很容易眼花缭乱,最终一事无成。 </p> <p>如果你是一个美貌的女孩子,年轻的时候会有许多男性宠你,你得到的东西过于容易,这会使你流于浅薄和虚浮;如果你是一个极聪明的男孩,又会以为自己能够成就许多大事而流于轻佻。 </p> <p>记住,每个人的能力有限,我们活在世上做好一件事足矣。写好一本书,做好一个主妇。不要轻视平凡的人,不要投机取巧,不要攻击自己做不到的事。你长大后会知道,做好一件事太难,但绝不要放弃。 </p> <p>你要懂得和珍惜感情。不管男人女人,不管墙内墙外,相交一场实在不容易。交友的过程会有误会和摩擦,但你想一想,偌大世界,能有缘结伴而行的又有几人?你要明白朋友终会离去,生活中能有人伴你在身边,听你倾谈,倾谈给你听,你就应该感激。 </p> <p>要爱自己和爱他人,要懂自己和懂他人。你的心要如溪水般柔软,你的眼波要象春天般妩媚。你要会流泪,会孤身一人坐在黑暗中听伤感的音乐。你要懂得欣赏悲剧,悲剧能丰富你的心灵。 </p> <p>希望你不要媚俗。你是个独立的人,无人能抹杀你的独立性,除非你向世俗妥协。要学会欣赏真,要在重重面具之下看到真。 </p> <p>世上圆滑标准的人很多,但出类拔萃的人极少。而往往出类拔萃又隐藏在卑琐狂荡之下。在形式上,我们无法与既定的世俗争斗,而在内心,我们都是自己的国王。如果你的脸上出现谄媚的笑容,我将羞愧的掩脸而去。世俗许多东西虽耀眼却无价值,不要把自己置于大众的天平上,你会因此无所适从,人云亦云。 </p> <p>在具体的做人上,我希望你不要打断别人的谈话,不要娇气十足。你每天至少拿出两小时来读书,不要想着别人为你做些什么,而要想着怎么去帮助他人。 </p> <p>借他人的东西要还,不要随便接受别人的恩惠,要记住,别人的东西,再好也是别人的,自己的东西,再差也是自己的。 </p> <p>还有一件事,虽然做起来很难,但相当重要,这就是要有勇气正视自己的缺点。你会一年年的长大,你渐渐会遇到比你强,比你优秀的人,你会发现自己身上有许多你所厌恶的缺点。这会使你沮丧和自卑。你一定要正视它,不要躲避,要一点一点的加以改正。战胜自己比征服他人还要艰巨和有意义。 </p> <p>不管世界潮流如何变化,但人的优秀品质却是永恒的:正直,勇敢,独立。我希望你是一个优秀的人。</p> ) 返回数据是数组,我们把他取出来 $content = $content[1];//取出第一个匹配到的内容就行了 //echo $content;//这里直接echo的话会有<p>标签,我们把他替换掉 $content = str_replace(['<p>', '</p>'], '', $content); echo $content;//再次输出就没有<p>标签了 以上内容输出为 孩子,我首先希望你自始至终都是一个理想主义者。你可以是农民,可以是工程师,可以是演员,可以是流浪汉,但你必须是个理想主义者。 当你童年,我们讲英雄的故事给你听,并不是要你一定成为英雄,而是希望具有纯正的品格;当你少年,我们让你接触诗歌、绘画、音乐,是为了让你的心灵填满高尚的情趣。这些高尚的情趣会支撑你的一生,使你在最严酷的冬天也不会忘记玫瑰的芳香。理想会使人出众。 孩子,不要为自己的外形担忧。理想纯洁你的气质,而最美貌的女人也会因为庸俗而令人生厌。通向理想的道路往往不尽人意,而你亦会为此受尽磨难。但是,孩子,你尽管去争取,理想主义者的结局悲壮而决不可怜。 在那貌似坎坷的人生中,你会结识到许多智者和君子,你会见到许多旁人无法遇到的风景和奇迹。选择平庸虽稳妥,但绝无色彩。 不要为蝇头小利放弃自己的理想,不要为某种潮流而放弃自己的信念。物质世界的外表太过复杂,你要懂得如何去拒绝虚荣的诱惑。理想不是实惠的东西,它往往无法带给你尘世的享受。因此你必须习惯无人欣赏你,学会精神享受,学会与他人不同。 其次,孩子,我希望你是一个踏实的人。人生太过短促,而虚的东西又太多,你很容易眼花缭乱,最终一事无成。 如果你是一个美貌的女孩子,年轻的时候会有许多男性宠你,你得到的东西过于容易,这会使你流于浅薄和虚浮;如果你是一个极聪明的男孩,又会以为自己能够成就许多大事而流于轻佻。 记住,每个人的能力有限,我们活在世上做好一件事足矣。写好一本书,做好一个主妇。不要轻视平凡的人,不要投机取巧,不要攻击自己做不到的事。你长大后会知道,做好一件事太难,但绝不要放弃。 你要懂得和珍惜感情。不管男人女人,不管墙内墙外,相交一场实在不容易。交友的过程会有误会和摩擦,但你想一想,偌大世界,能有缘结伴而行的又有几人?你要明白朋友终会离去,生活中能有人伴你在身边,听你倾谈,倾谈给你听,你就应该感激。 要爱自己和爱他人,要懂自己和懂他人。你的心要如溪水般柔软,你的眼波要象春天般妩媚。你要会流泪,会孤身一人坐在黑暗中听伤感的音乐。你要懂得欣赏悲剧,悲剧能丰富你的心灵。 希望你不要媚俗。你是个独立的人,无人能抹杀你的独立性,除非你向世俗妥协。要学会欣赏真,要在重重面具之下看到真。 世上圆滑标准的人很多,但出类拔萃的人极少。而往往出类拔萃又隐藏在卑琐狂荡之下。在形式上,我们无法与既定的世俗争斗,而在内心,我们都是自己的国王。如果你的脸上出现谄媚的笑容,我将羞愧的掩脸而去。世俗许多东西虽耀眼却无价值,不要把自己置于大众的天平上,你会因此无所适从,人云亦云。 在具体的做人上,我希望你不要打断别人的谈话,不要娇气十足。你每天至少拿出两小时来读书,不要想着别人为你做些什么,而要想着怎么去帮助他人。 借他人的东西要还,不要随便接受别人的恩惠,要记住,别人的东西,再好也是别人的,自己的东西,再差也是自己的。 还有一件事,虽然做起来很难,但相当重要,这就是要有勇气正视自己的缺点。你会一年年的长大,你渐渐会遇到比你强,比你优秀的人,你会发现自己身上有许多你所厌恶的缺点。这会使你沮丧和自卑。你一定要正视它,不要躲避,要一点一点的加以改正。战胜自己比征服他人还要艰巨和有意义。 不管世界潮流如何变化,但人的优秀品质却是永恒的:正直,勇敢,独立。我希望你是一个优秀的人。 trim函数可以去除首尾的空行,但是他还有多余的换行这里使用 preg_replace 正则替换 preg_replace 函数执行一个正则表达式的搜索和替换。 用法与preg_match + str_replace一样 $content = preg_replace('/[\r\n]{2,}/', "\n", $content);//这里的{2,}是指匹配两次及以上 echo trim($content);//加上trim再次echo 我们会得到 孩子,我首先希望你自始至终都是一个理想主义者。你可以是农民,可以是工程师,可以是演员,可以是流浪汉,但你必须是个理想主义者。 当你童年,我们讲英雄的故事给你听,并不是要你一定成为英雄,而是希望具有纯正的品格;当你少年,我们让你接触诗歌、绘画、音乐,是为了让你的心灵填满高尚的情趣。这些高尚的情趣会支撑你的一生,使你在最严酷的冬天也不会忘记玫瑰的芳香。理想会使人出众。 孩子,不要为自己的外形担忧。理想纯洁你的气质,而最美貌的女人也会因为庸俗而令人生厌。通向理想的道路往往不尽人意,而你亦会为此受尽磨难。但是,孩子,你尽管去争取,理想主义者的结局悲壮而决不可怜。 在那貌似坎坷的人生中,你会结识到许多智者和君子,你会见到许多旁人无法遇到的风景和奇迹。选择平庸虽稳妥,但绝无色彩。 不要为蝇头小利放弃自己的理想,不要为某种潮流而放弃自己的信念。物质世界的外表太过复杂,你要懂得如何去拒绝虚荣的诱惑。理想不是实惠的东西,它往往无法带给你尘世的享受。因此你必须习惯无人欣赏你,学会精神享受,学会与他人不同。 其次,孩子,我希望你是一个踏实的人。人生太过短促,而虚的东西又太多,你很容易眼花缭乱,最终一事无成。 如果你是一个美貌的女孩子,年轻的时候会有许多男性宠你,你得到的东西过于容易,这会使你流于浅薄和虚浮;如果你是一个极聪明的男孩,又会以为自己能够成就许多大事而流于轻佻。 记住,每个人的能力有限,我们活在世上做好一件事足矣。写好一本书,做好一个主妇。不要轻视平凡的人,不要投机取巧,不要攻击自己做不到的事。你长大后会知道,做好一件事太难,但绝不要放弃。 你要懂得和珍惜感情。不管男人女人,不管墙内墙外,相交一场实在不容易。交友的过程会有误会和摩擦,但你想一想,偌大世界,能有缘结伴而行的又有几人?你要明白朋友终会离去,生活中能有人伴你在身边,听你倾谈,倾谈给你听,你就应该感激。 要爱自己和爱他人,要懂自己和懂他人。你的心要如溪水般柔软,你的眼波要象春天般妩媚。你要会流泪,会孤身一人坐在黑暗中听伤感的音乐。你要懂得欣赏悲剧,悲剧能丰富你的心灵。 希望你不要媚俗。你是个独立的人,无人能抹杀你的独立性,除非你向世俗妥协。要学会欣赏真,要在重重面具之下看到真。 世上圆滑标准的人很多,但出类拔萃的人极少。而往往出类拔萃又隐藏在卑琐狂荡之下。在形式上,我们无法与既定的世俗争斗,而在内心,我们都是自己的国王。如果你的脸上出现谄媚的笑容,我将羞愧的掩脸而去。世俗许多东西虽耀眼却无价值,不要把自己置于大众的天平上,你会因此无所适从,人云亦云。 在具体的做人上,我希望你不要打断别人的谈话,不要娇气十足。你每天至少拿出两小时来读书,不要想着别人为你做些什么,而要想着怎么去帮助他人。 借他人的东西要还,不要随便接受别人的恩惠,要记住,别人的东西,再好也是别人的,自己的东西,再差也是自己的。 还有一件事,虽然做起来很难,但相当重要,这就是要有勇气正视自己的缺点。你会一年年的长大,你渐渐会遇到比你强,比你优秀的人,你会发现自己身上有许多你所厌恶的缺点。这会使你沮丧和自卑。你一定要正视它,不要躲避,要一点一点的加以改正。战胜自己比征服他人还要艰巨和有意义。 不管世界潮流如何变化,但人的优秀品质却是永恒的:正直,勇敢,独立。我希望你是一个优秀的人。 很完美的内容,但是他不止有内容还有标题以及作者我们按照以上方法匹配作者及标题 preg_match('/<h1>(.*?)<\/h1>/', $data, $title);//匹配标题 preg_match('/<p class="article_author"><span>(.*?)<\/span><\/p>/', $data, $author);//匹配作者 $title = $title[1]; $author = $author[1]; //我们echo 他们 echo '标题:'.$title; echo "\n"; echo '作者:'.$author; 这里就不给返回文本了写到这里本以为差不多了。没想到刷新网页的时候发现Ta文章变了。想了两个解决方法 一个是存到数据库 一个是存文件我用的是缓存文件的方法 $array = ['title'=>$title, 'author'=>$author, 'content'=>$content, 'time'=>Date('Y-m-d')];//结合成数组 $path = __DIR__.'/Cache/content/'.Date('Y-m-d').'.json';//绝对路径中的目录以及文件记得创建相应的目录 file_put_contents($path, json_encode($array, 320)); //这样文件就存在了,运行时可以优先判断文件是否存在 判断文件是否存在的方法 $path = __DIR__.'/Cache/content/'.Date('Y-m-d').'.json'; if(file_exists($path)){ //存在就读取 echo file_get_contents($path); }else{ //没有就获取 /////////获取内容//////// } 由于一点点写过于麻烦,所以封装成了类代码 <?php header('content-type: application/json;'); $type = @$_REQUEST['type']; $time = @$_REQUEST['Time']; new 每日一文(['type'=>$type, 'time'=>$time]); class 每日一文{ protected $info = []; protected $array = array(); protected $Msg; public function __construct(array $array){ foreach($array as $k=>$v){ $this->info[$k] = $v; } $this->ParameterException(); } protected function ParameterException(){ $time = $this->info['time']; if($time){ $this->getTime(); return; }else{ $this->getcontent(); return; } return; } public function getTime(){ $Time = $this->info['time']; if(preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/', $Time)){ $Time = $Time; }else{ $Time = Date('Y-m-d'); } if(file_exists(__DIR__.'/Cache/content/'.$Time.'.json')){ $content = @json_decode(file_get_contents(__DIR__.'/Cache/content/'.$Time), true); if(!$content){ $this->getcontent($Time); return; }else{ unset($this->array, $this->Msg); $this->array = ['code'=>1, 'text'=>'获取成功', 'data'=>$content]; $this->Msg = ' '.$content['title']."\n".' '.$content['author']."\n".$content['content']; $this->returns(); return; } }else{ $this->getcontent($Time); return; } } public function getcontent($time = ''){ if(!$time){ $path = __DIR__.'/Cache/content/'.Date('Y-m-d').'.json'; }else{ if(!strtotime($time)){ $path = __DIR__.'/Cache/content/'.Date('Y-m-d').'.json'; }else{ $path = __DIR__.'/Cache/content/'.$time.'.json'; } } //echo $path;exit; if(file_exists($path)){ $content = @json_decode(file_get_contents($path), true); if(!$content){ $url = 'https://meiriyiwen.com/'; $data = teacher_curl($url); if(!$data){ unset($this->array, $this->Msg); $this->array = ['code'=>-1, 'text'=>'未知错误,请稍后重试']; $this->Msg = '未知错误,请稍后重试'; $this->returns(); return; } preg_match('/<h1>(.*?)<\/h1>/', $data, $title); preg_match('/<p class="article_author"><span>(.*?)<\/span><\/p>/', $data, $author); preg_match('/<div class="article_text">([\s\S]*?)<\/div>/', $data, $content); $title = $title[1]; $author = $author[1]; $content = trim(str_replace(['<p>', '</p>'], '', $content[1])); $array = ['title'=>$title, 'author'=>$author, 'content'=>$content, 'image'=>'https://meiriyiwen.com/images/new_feed/bg_'.mt_rand(1, 98).'.jpg', 'time'=>Date('Y-m-d')]; file_put_contents($path, json_encode($array, 320)); unset($this->array, $this->Msg); $this->array = ['code'=>1, 'text'=>'获取成功', 'data'=>$array]; $this->Msg = ' '.$title."\n".' '.$author."\n".$content; $this->returns(); return; }else{ unset($this->array, $this->Msg); $this->array = ['code'=>1, 'text'=>'获取成功', 'data'=>$content]; $this->Msg = ' '.$content['title']."\n".' '.$content['author']."\n ".$content['content']; $this->returns(); return; } }else{ $url = 'https://meiriyiwen.com/'; $data = teacher_curl($url); if(!$data){ unset($this->array, $this->Msg); $this->array = ['code'=>-1, 'text'=>'未知错误,请稍后重试']; $this->Msg = '未知错误,请稍后重试'; $this->returns(); return; } preg_match('/<h1>(.*?)<\/h1>/', $data, $title); preg_match('/<p class="article_author"><span>(.*?)<\/span><\/p>/', $data, $author); preg_match('/<div class="article_text">([\s\S]*?)<\/div>/', $data, $content); $title = $title[1]; $author = $author[1]; $content = trim(str_replace(['<p>', '</p>', "\r\n"], ['', '', "\n"], $content[1])); $array = ['title'=>$title, 'author'=>$author, 'content'=>$content, 'image'=>'https://meiriyiwen.com/images/new_feed/bg_'.mt_rand(1, 98).'.jpg', 'time'=>Date('Y-m-d')]; file_put_contents($path, json_encode($array, 320)); unset($this->array, $this->Msg); $this->array = ['code'=>1, 'text'=>'获取成功', 'data'=>$array]; $this->Msg = ' '.$title."\n".' '.$author."\n ".$content; $this->returns(); return; } } protected function returns(){ $type = $this->info['type']; Switch($type){ case 'text': echo ($this->Msg); break; default: echo ($this->array); break; } return; } } 值得一提的是,以上内容使用的是电脑的user-agent,而手机端的内容与电脑端完全不一样。{lamp/}Tips:评论加点赞,不减功德本文完
2022年05月06日
73 阅读
2 评论
4 点赞
2021-12-07
小豆泥表情包
暂无简介
2021年12月07日
383 阅读
0 评论
2 点赞
2021-09-03
API接口源码 - 漂流瓶 - 我们漂流瓶联系!
{mtitle title="前言"/}第一次接触数据库写的东西,目前挂在 三三酱API 本来想法是用本地文件加正则匹配写后来发现容易暴露,于是换了数据库。不得不说本地文件读取加正则匹配速度跟数据库一比就是弟弟…数据库读取500条0.0014s,本地正则500个大概0.014s ::(捂嘴笑){mtitle title="数据库配置"/} $load_url = 'localhost';//数据库链接 $load_user = 'user';//用户账户 $load_password = 'password';//密码 $load_name = 'user_name';//用户名 $load_Part = '3306';//端口一般为3306不用动 {alert type="info"}提示:请配置正确的数据库信息{/alert}{mtitle title="创建数据库表命令"/} CREATE TABLE `Piao_total` ( `id` int(11) NOT NULL AUTO_INCREMENT, `Piao_name` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '漂流瓶的标题', `Piao_text` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '漂流瓶内容', `Piao_number` bigint(11) NOT NULL COMMENT '丢漂流瓶的账号', `Piao_time` bigint(11) NOT NULL COMMENT '丢漂流瓶的时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 {mtitle title="参数讲解"/}msgtitleQQSelect内容标题发送者账号选项typeppasswordid输出格式页码操作密码操作id{mtitle title="文件讲解"/}{card-default label="api.php" width="50%"}主文件{/card-default}{card-default label="require.php" width="50%"}违禁词文件{/card-default}{card-default label="need.php" width="50%"}函数文件{/card-default}{alert type="success"}以上就是漂流瓶代码中的一些内容{/alert}{mtitle title="全量文件"/}{message type="info" content="不包括数据库数据!"/}隐藏内容,请前往内页查看详情
2021年09月03日
615 阅读
37 评论
6 点赞
2021-09-01
PHP - Mb_String函数类
{mtitle title="简介"/}虽然许多语言每个必要字符都能一对一映射到 8 比特(bit)的值,但也有好几种语言需要非常多的字符来书面通讯,以至于它们的编码范围不能仅仅包含在一个字节里(一个字节 Byte 由 8 比特 bit 构成。每一比特仅能包含两种不同的值: 1 或 0。所以,一字节仅能够表示 256 种不同的值,即 2 的八次方)。 开发多字节字符编码方案是为了在基于字节的常规编码系统中表达超过 256 个字符。在你操作(trim、split、splice 等等)多字节编码的字符串的时候,由于在这种编码方案下,两个或多个连续字节可能只表达了一个字符,所以你需要使用专门的函数。 否则,当你将不能检测多字节字符串的函数应用到这个字符串的时候,它可能无法检测多字节字符的起始位置,并以乱码字符串结尾,基本丢失了它原来的意思。mbstring 提供了针对多字节字符串的函数,能够帮你处理 PHP 中的多字节编码。 除此以外,mbstring 还能在可能的字符编码之间相互进行编码转换。 为了方便起见,mbstring 设计成了处理基于 Unicode 的编码,类似 UTF-8、UCS-2 及诸多单字节的编码(在以下列出了)。{mtitle title="代码部分"/} mb_check_encoding — 检查字符串在指定的编码里是否有效 mb_chr — Get a specific character mb_convert_case — 对字符串进行大小写转换 mb_convert_encoding — 转换字符的编码 mb_convert_kana — Convert "kana" one from another ("zen-kaku", "han-kaku" and more) mb_convert_variables — 转换一个或多个变量的字符编码 mb_decode_mimeheader — 解码 MIME 头字段中的字符串 mb_decode_numericentity — 根据 HTML 数字字符串解码成字符 mb_detect_encoding — 检测字符的编码 mb_detect_order — 设置/获取 字符编码的检测顺序 mb_encode_mimeheader — 为 MIME 头编码字符串 mb_encode_numericentity — Encode character to HTML numeric string reference mb_encoding_aliases — Get aliases of a known encoding type mb_ereg_match — Regular expression match for multibyte string mb_ereg_replace_callback — Perform a regular expression search and replace with multibyte support using a callback mb_ereg_replace — Replace regular expression with multibyte support mb_ereg_search_getpos — Returns start point for next regular expression match mb_ereg_search_getregs — Retrieve the result from the last multibyte regular expression match mb_ereg_search_init — Setup string and regular expression for a multibyte regular expression match mb_ereg_search_pos — Returns position and length of a matched part of the multibyte regular expression for a predefined multibyte string mb_ereg_search_regs — Returns the matched part of a multibyte regular expression mb_ereg_search_setpos — Set start point of next regular expression match mb_ereg_search — Multibyte regular expression match for predefined multibyte string mb_ereg — Regular expression match with multibyte support mb_eregi_replace — Replace regular expression with multibyte support ignoring case mb_eregi — Regular expression match ignoring case with multibyte support mb_get_info — 获取 mbstring 的内部设置 mb_http_input — 检测 HTTP 输入字符编码 mb_http_output — 设置/获取 HTTP 输出字符编码 mb_internal_encoding — 设置/获取内部字符编码 mb_language — 设置/获取当前的语言 mb_list_encodings — 返回所有支持编码的数组 mb_ord — Get code point of character mb_output_handler — 在输出缓冲中转换字符编码的回调函数 mb_parse_str — 解析 GET/POST/COOKIE 数据并设置全局变量 mb_preferred_mime_name — 获取 MIME 字符串 mb_regex_encoding — Set/Get character encoding for multibyte regex mb_regex_set_options — Set/Get the default options for mbregex functions mb_scrub — Description mb_send_mail — 发送编码过的邮件 mb_split — 使用正则表达式分割多字节字符串 mb_strcut — 获取字符的一部分 mb_strimwidth — 获取按指定宽度截断的字符串 mb_stripos — 大小写不敏感地查找字符串在另一个字符串中首次出现的位置 mb_stristr — 大小写不敏感地查找字符串在另一个字符串里的首次出现 mb_strlen — 获取字符串的长度 mb_strpos — 查找字符串在另一个字符串中首次出现的位置 mb_strrchr — 查找指定字符在另一个字符串中最后一次的出现 mb_strrichr — 大小写不敏感地查找指定字符在另一个字符串中最后一次的出现 mb_strripos — 大小写不敏感地在字符串中查找一个字符串最后出现的位置 mb_strrpos — 查找字符串在一个字符串中最后出现的位置 mb_strstr — 查找字符串在另一个字符串里的首次出现 mb_strtolower — 使字符串小写 mb_strtoupper — 使字符串大写 mb_strwidth — 返回字符串的宽度 mb_substitute_character — 设置/获取替代字符 mb_substr_count — 统计字符串出现的次数 mb_substr — 获取部分字符串 {alert type="info"}本文内容转载于:https://www.php.net/manual/zh/intro.mbstring.php{/alert}
2021年09月01日
139 阅读
2 评论
3 点赞
2021-08-19
QRspeed词库-番剧更新检测
{mtitle title="QRspeed词库"/}前两天QRspeed词库插件进行了更新{timeline}{timeline-item color="#19be6b"} 更新词库同时运行{/timeline-item}{timeline-item color="#19be6b"} 提升词库运行速度{/timeline-item}{/timeline}{message type="info" content="请控制词库量"/}{dotted startColor="#ff6c6c" endColor="#1989fa"/}本次更新内容可以说是非常的 合我心意{mtitle title="更新好处"/}大大的 加快 了词库的运行速度同一触发条件不同的 回复 方式减小了词库的 臃肿可以说是非常的人性化了!基于此,写了一份番剧更新的词库由 反复调用,对比数据 来进行判定。不过因为 接口 原因,番剧更新检测只有 国漫以及 日漫 两种{x} 话不多说上才艺{x} 下载链接出来吧!{alert type="success"}隐藏内容,请前往内页查看详情{/alert}
2021年08月19日
309 阅读
16 评论
2 点赞
2021-08-13
答案之书 - API源码 - PHP
前两天,朋友收到一本书《答案之书》看起来针不戳,想要.JPG于是乎 写了一个答案之书的接口。但是,内容并没有太多…因为字太多了我懒得复制…只是抄了其中很小的一部分 ::(捂嘴笑) 还有很多没有写… ::(开心) {mtitle title="答案之书"/}以下是代码部分(PHP)<?php $array = json_decode(file_get_contents('./data.json'),true);//读取本地文件并解码为PHP变量 $rand = array_rand($array,1);//随机读取一个key $type = $_REQUEST['type'];//获取返回条件 if($type == 'text'){ //返回条件如果是text echo $array[$rand]['zh']; echo "\n"; echo $array[$rand]['en']; }else{ //返回条件如果为其他的 $zh = $array[$rand]['zh']; $en = $array[$rand]['en']; echo json(array('code'=>1,'text'=>'获取成功','data'=>array('zh'=>$zh,'en'=>$en))); } function json($arr){ header('Content-type: application/json'); return stripslashes(json_encode($arr,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES)); } 上面代码中提到了 stripslashes 这里说明一下 stripslashes 在PHP中是去除\反向斜杠用的,使其更加美观。{dotted startColor="#ff6c6c" endColor="#1989fa"/}data.json 文件下载隐藏内容,请前往内页查看详情{message type="warning" content="转载时请标明出处!"/}
2021年08月13日
489 阅读
28 评论
4 点赞
2021-08-06
群字符抽取--API源码!
{mtitle title="群字符API"/}前言前两天偶然看到了别人接口里面的抽取群字符这不行我也想要于是打开了 黄鸟准备好抓取抽字符{dotted startColor="#ff6c6c" endColor="#1989fa"/}开始抓取抓取到一个链接{callout color="#f0ad4e"}https://qun.qq.com/v2/luckyword/proxy/domain/qun.qq.com/cgi-bin/group_lucky_word/draw_lottery?bkn=14117570**{/callout}请求方式{callout color="#f0ad4e"}POST{/callout}请求参数{callout color="#f0ad4e"}{"group_code":820323177}{/callout}HEADER{callout color="#f0ad4e"}Host: qun.qq.comConnection: keep-aliveContent-Length: 24Accept: application/json, text/plain, /qname-service: 976321:131072qname-space: ProductionUser-Agent: Mozilla/5.0 (Linux; Android 11; PCLM10 Build/RKQ1.200928.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 V1_AND_SQ_8.8.3_1818_YYB_D A_8080300 QQ/8.8.3.5470 NetType/4G WebP/0.4.1 Pixel/1080 StatusBarHeight/85 SimpleUISwitch/1 QQTheme/3063 InMagicWin/0 StudyMode/0Content-Type: application/json;charset=UTF-8Origin: https://qun.qq.comX-Requested-With: com.tencent.mobileqqSec-Fetch-Site: same-originSec-Fetch-Mode: corsSec-Fetch-Dest: emptyReferer: https://qun.qq.com/v2/luckyword/index?qunid=820323177&_wv=67108865&_nav_txtclr=FFFFFF&_wvSb=0&source=enterAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7Cookie: p_uin=o2354452553; qq_locale_id=2052; uin=o2354452553; skey=这是Skey; p_skey=这是Pskey{/callout} 真的很齐全返回数据{callout color="#f0ad4e"}{"retcode":0,"msg":"success","data":{"word_info":{"word_info":{"word_id":"11","char_count":5,"wording":"match","word_desc":"意为相配,千金易得,知己难求,默契的灵魂终会相遇。","url_prefix":"https://gxh.vip.qq.com/xydata/groupluckyword/item","mtime":"1602507530","charge_type":1,"light_up_cfgs":[{"group_member_min_count":0,"group_member_max_count":201,"chat_count_per_char":80,"max_chat_count_per_day":40},{"group_member_min_count":201,"group_member_max_count":501,"chat_count_per_char":160,"max_chat_count_per_day":80},{"group_member_min_count":501,"group_member_max_count":1001,"chat_count_per_char":240,"max_chat_count_per_day":120},{"group_member_min_count":1001,"group_member_max_count":100000,"chat_count_per_char":600,"max_chat_count_per_day":300}]},"chosen_uin":"2354452553","chosen_time":1628220057}}}{/callout}{dotted startColor="#ff6c6c" endColor="#1989fa"/}开始写<?php $Skey = $_REQUEST['Skey']?:die('棍');//Skey $Pskey = $_REQUEST['Pskey']?:die('棍');//Pskey $Group = $_REQUEST['Group']?:die('棍');//群号 $QQ = $_REQUEST['QQ']?:die('棍');//提供Pskey的账号 /*需要用到的数据*/ $Gtk = getGTK($Skey);//计算Gtk $data = json_decode(teacher_curl('https://qun.qq.com/v2/luckyword/proxy/domain/qun.qq.com/cgi-bin/group_lucky_word/draw_lottery?bkn='.$Gtk,[//请求连接 'refer'=>'https://qun.qq.com/v2/luckyword/index?qunid='.$Group.'&_wv=67108865&_nav_txtclr=FFFFFF&_wvSb=0&source=enter',//请求Referer头部 'Header'=>[ 'qname-service: 976321:131072',//这个信息很重要,一开始我写的时候没有携带。返回空白数据离谱。 'qname-space: Production',//同上重要数据 'Content-Type: application/json;charset=UTF-8', 'Accept-Encoding: gzip, deflate', 'Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7', 'Accept: application/json, text/plain, */*' ],//header头部信息 'cookie'=>'p_skey='.$Pskey.'; qq_locale_id=2052; p_uin=o'.$QQ.'; uin=o'.$QQ.'; skey='.$Skey,//携带的cookie 'post'=>json_encode(['group_code'=>$Group]),//Post参数 'ua'=>'Mozilla/5.0 (Linux; Android 11; PCLM10 Build/RKQ1.200928.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36 V1_AND_SQ_8.8.3_1818_YYB_D A_8080300 QQ/8.8.3.5470 NetType/4G WebP/0.4.1 Pixel/1080 StatusBarHeight/85 SimpleUISwitch/0 QQTheme/1000 InMagicWin/0 StudyMode/1' ]),true); //print_r($data);//这里可以打印一下看看输出什么 $code = $data['retcode'];//状态码 $Msg = $data['msg'];//返回提示信息 //通过状态码开始判断 if($code == 0){ $data = $data['data']; if(empty($data)){ die('恭喜您抽中了空气!'); } $data = $data['word_info']['word_info']; $name = $data['wording']; $desc = $data['word_desc']; echo '恭喜您!抽到了'.$name; echo "\n"; echo '寓意是:'.$desc; }else if($code == 11004){ echo '今日抽字符已达上限!'; exit(); }else if($code == 41){ echo '坏掉的Pskey哦'; exit(); }else if($code == 10005){ echo '群信息获取错误'; exit(); }else{ echo $code; echo "\n"; echo $Msg; } {progress percentage="80" color="#ff6c6c"/} 这里提供一个堪称万能的curl方法:/** * @author 教书先生 * @link https://blog.oioweb.cn * @date 2020年11月12日18:00:30 * @msg PHPCurl封装的方法 */ function teacher_curl($url, $paras = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); if (@$paras['Header']) { $Header = $paras['Header']; } else { $Header[] = "Accept:*/*"; $Header[] = "Accept-Encoding:gzip,deflate,sdch"; $Header[] = "Accept-Language:zh-CN,zh;q=0.8"; $Header[] = "Connection:close"; $Header[] = 'X-FORWARDED-FOR:'.Rand_IP(); $Header[] = 'CLIENT-IP:'.Rand_IP(); } curl_setopt($ch, CURLOPT_HTTPHEADER, $Header); if (@$paras['ctime']) { // 连接超时 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $paras['ctime']); } else { curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); } if (@$paras['rtime']) { // 读取超时 curl_setopt($ch, CURLOPT_TIMEOUT, $paras['rtime']); } if (@$paras['post']) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $paras['post']); } if (@$paras['header']) { curl_setopt($ch, CURLOPT_HEADER, true); } if (@$paras['cookie']) { curl_setopt($ch, CURLOPT_COOKIE, $paras['cookie']); } if (@$paras['refer']) { if ($paras['refer'] == 1) { curl_setopt($ch, CURLOPT_REFERER, 'http://m.qzone.com/infocenter?g_f='); } else { curl_setopt($ch, CURLOPT_REFERER, $paras['refer']); } } if (@$paras['ua']) { curl_setopt($ch, CURLOPT_USERAGENT, $paras['ua']); } else { curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36"); } if (@$paras['nobody']) { curl_setopt($ch, CURLOPT_NOBODY, 1); } curl_setopt($ch, CURLOPT_ENCODING, "gzip"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if (@$paras['GetCookie']) { curl_setopt($ch, CURLOPT_HEADER, 1); $result = curl_exec($ch); preg_match_all("/Set-Cookie: (.*?);/m", $result, $matches); $headerSize = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($result, 0, $headerSize); //状态码 $body = substr($result, $headerSize); $ret = [ "Cookie" => $matches, "body" => $body, "header" => $header, 'code' => curl_getinfo($ch, CURLINFO_HTTP_CODE) ]; curl_close($ch); return $ret; } $ret = curl_exec($ch); if (@$paras['loadurl']) { $Headers = curl_getinfo($ch); $ret = $Headers['redirect_url']; } curl_close($ch); return $ret; } function Rand_IP(){ #第一种方法,直接生成 $ip2id= round(rand(600000, 2550000) / 10000); $ip3id= round(rand(600000, 2550000) / 10000); $ip4id= round(rand(600000, 2550000) / 10000); #第二种方法,随机抽取 $arr_1 = array("218","218","66","66","218","218","60","60","202","204","66","66","66","59","61","60","222","221","66","59","60","60","66","218","218","62","63","64","66","66","122","211"); $randarr= mt_rand(0,count($arr_1)-1); $ip1id = $arr_1[$randarr]; return $ip1id.".".$ip2id.".".$ip3id.".".$ip4id; } 提供一个Gtk算法:function getGTK($skey){ $len = strlen($skey); $hash = 5381; for ($i = 0; $i < $len; $i++) { $hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647; $hash &= 2147483647; } return $hash & 2147483647; } 接口结束{progress percentage="99%" color="#ff6c6c"/}看到这里就该结束了总结一下,一些接口携带的头部信息很重要!研究了一个小时竟然是头部信息我吐了{message type="info" content="接口来源于网络!如有侵犯请联系我!"/}
2021年08月06日
233 阅读
9 评论
8 点赞
2021-08-06
QQ部分API接口(收藏)
QQ部分API接口(收藏)接口所需Cookie如无特殊情况不做说明 {callout color="#f0ad4e"}uin=o提供Skey的账号; p_uin=o提供Skey的账号; skey=与账号相符Skey; p_skey=与账号相符Pskey{/callout}BKN GTK通用算法提示:BKN 一般情况是通过Skey计算的, GTK通过Pskey计算的。 C#代码:{ var hash = 5381; for (int i = 0, len = skey.Length; i < len; ++i) hash += (hash << 5) + (int)skey[i]; return hash & 2147483647; }PHP代码:function bkn($skey){ $len = strlen($skey); $hash = 5381; for ($i = 0; $i < $len; $i++) { $hash += ($hash << 5 & 2147483647) + ord($skey[$i]) & 2147483647; $hash &= 2147483647; } return $hash & 2147483647; } ```` 1.QQ头像接口,imgtype参数值为1到4 ①.https://ssl.ptlogin2.qq.com/getface?imgtype=4&uin=QQ号码 ②.http://q2.qlogo.cn/headimg_dl?dst_uin=QQ号码&spec=5 2.QQ群头像接口 http://p.qlogo.cn/gh/QQ群号码/QQ群号码/100/ 3.QQ空间背景音乐接口 http://qzone-music.qq.com/fcg-bin/cgi_playlist_xml.fcg?g_tk=这里是GTK&json=1&uin=QQ号码 ##### 需要Cookie 4.QQ群设置接口,bkn自己获取 http://qinfo.clt.qq.com/cgi-bin/ing_v2?gc=群号&bkn=这里是bkn ##### 需要Cookie 5.QQ个人信息接口,bkn自己获取 https://qun.qq.com/cgi-bin/qunwelcome/myinfo?callback=?&bkn=这里是BKN ##### 需要Cookie 6.QQ空间头像接口 http://qlogo3.store.qq.com/qzone/QQ号/QQ号/100 7.QQ好友列表 https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list?bkn=这里是BKN,上面有算法 ##### 需要Cookie 8.QQ群列表 https://qun.qq.com/cgi-bin/qun_mgr/get_group_list?bkn=这里是BKN ##### 需要Cookie 9.QQ群列表(简略信息) http://qun.qzone.qq.com/cgi-bin/get_group_list?g_tk=这里是GTK ##### 需要Cookie 10.QQ群成员获取接口 https://qun.qq.com/cgi-bin/qun_mgr/search_group_members?gc=群号&st=&end=&sort=0&bkn=这里是BKN **gc由qq群列表返回json中获取,st为起始位置由0开始,end为终止位置由0开始** ##### 需要Cookie 11.QQ修改群名片 POST:https://qinfo.clt.qq.com/cgi-bin/qun_info/set_group_card 提交信息u=&name=&gc=&bkn= u为本人QQ,name为欲修改为的名字(需要url编码),gc为群号,bkn必填 附加协议头Referer:https://qinfo.clt.qq.com/qinfo_v3/member.html?groupuin= ##### 需要提交cookie 12.QQ取本地已登录账号 https://localhost.ptlogin2.qq.com:xxxx/pt_get_uins?callback=ptui_getuins_CB&r=&pt_local_tk= 此链接指向本地127.0.0.1,xxxx为本地端口号,需要通过netstat -ano查看,开头为43xx 13.QQ取群公告 http://qun.qq.com/cgi-bin/feeds/get_list?qid=群号&i=1&s=-1&n= qid为群号,n为数量(无上限),访问需登录 ##### 需要Cookie 14.QQ取群基本信息 https://qinfo.clt.qq.com/cgi-bin/qun_info/get_group_info_v2?gc=群号&bkn=这里是BKN gc为群号,bkn必填,附加协议头Referer:https://qinfo.clt.qq.com/qinfo_v3/setting.html?groupuin= ##### 需要Cookie 15.QQ取群基本信息(全部) https://qinfo.clt.qq.com/cgi-bin/qun_info/get_group_info_all?gc=群号&bkn=这里是BKN gc为群号,bkn必填,附加协议头Referer:https://qinfo.clt.qq.com/qinfo_v3/member.html?groupuin= ##### 需要Cookie 16.QQ取群付费信息 https://pay.qun.qq.com/cgi-bin/group_pay/group_enter_fee/get_group_enter_fee?gc=群号&bkn=这里是BKN gc为群号,bkn必填,附加协议头Referer:https://qinfo.clt.qq.com/qinfo_v3/setting.html?groupuin= ##### 需要Cookie 17.QQ取群成员基本信息 http://qun.qq.com/cgi-bin/get_group_member?groupid=&g_tk= groupid为群号,g_tk必填,在item数组中包含管理员信息(简略) ##### 需要Cookie 18.QQ取群成员信息和设置 https://qinfo.clt.qq.com/cgi-bin/qun_info/get_members_info_v1?gc=&bkn= gc为群号,bkn必填,附加协议头Referer:https://qinfo.clt.qq.com/qinfo_v3/member.html?groupuin= ##### 需要Cookie 19.QQ取群文件信息 http://qun.qq.com/cgi-bin/get_group_share_info?groupid=&g_tk= groupid为群号,g_tk必填,访问需登录,好像只能获取到群文件数量,具体自己测试 ##### 需要Cookie 20.QQ取群文件最佳CDN http://qun.qq.com/cgi-bin/group_share_get_downurl?groupid=&pa=%2F102%2F83c65cb2-41b5-11ea-a715-5452007bdaa4&g_tk= groupid为群号,g_tk必填 ##### 需要Cookie 21.QQ取群文件(只能取到100) http://qun.qzone.qq.com/cgi-bin/group_share_list?groupid=&bussinessid=0&g_tk= groupid为群号,g_tk必填 ##### 需要Cookie 22.QQ取历史头像 https://ti.qq.com/mqqbase/cgi/history/face/list?timestamp=&num=&need_cur=1 所有内容均为必填项,在登录后即可获取,num为获取数量,如果要取全部就填很大(测试最大50) ##### 需要Cookie 23.QQ取最近群验证消息(html) https://web.qun.qq.com/cgi-bin/sys_msg/getmsg?ver=5689&filter=0&ep=0 包括待处理消息https://web.qun.qq.com/cgi-bin/sys_msg/getmsg?ver=5689 ##### 需要Cookie 24.QQ取群idkey https://qun.qq.com/proxy/domain/shang.qq.com/wpa/g_wpa_get?guin= 需要cookie,协议头Referer:https://qun.qq.com/proxy.html?callback=1&id=1,guin为群号中间用英文逗号“,”隔开,guin需url编码 ##### 需要Cookie 25.QQ取加群二维码 https://qm.qq.com/dl/wpa/e_group?gid=&size=420 需要cookie,gid为群号,size必须(改了大小也不会改变),附加协议头Referer: https://qun.qq.com/join.html ##### 需要Cookie 26.QQ群应用 https://pub.idqqimg.com/qqun/app/aio/appstore.json.js 27.QQ群投票 http://client.qun.qq.com/cgi-bin/feeds/get_t_list?s=-1&ft=21&i=1&qid=&bkn=&n= 需要cookie,qid为群号,bkn必填,n为数量(尽量往大填可以取全部) http://client.qun.qq.com/cgi-bin/feeds/get_feed?fid=&qid=&bkn= 需要cookie,qid为群号,fid为上个接口获取到的fid,bkn必填 ##### 需要Cookie 28.QQ空间发送 https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?qzonetoken=&g_tk= ##### 需要Cookie 以下为仅自己可见的post提交内容 syn_tweet_verson: 1 paramstr: 1 pic_template: richtype: richval: special_url: subrichtype: who: 1 con: 测试 feedversion: 1 ver: 1 ugc_right: 64 to_sign: 0 hostuin: 9877677 code_version: 1 format: fs qzreferrer: https://user.qzone.qq.com/9877677 29.QQ空间删除 https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_delete_v6?qzonetoken=&g_tk= ##### 需要Cookie 以下是删除上面测试的说说所post的参数 uin: 9877677 topicId: 9877677_9690071863712e5ec1e60100__1 feedsType: 0 feedsFlag: 0 feedsKey: 9690071863712e5ec1e60100 feedsAppid: 311 feedsTime: 1580101987 fupdate: 1 ref: feeds qzreferrer: https://user.qzone.qq.com/9877677 30.QQ空间获取(返回jsonp) https://user.qzone.qq.com/proxy/domain/ic2.qzone.qq.com/cgi-bin/feeds/feeds3_html_more?uin=9877677&scope=0&view=1&daylist=&uinlist=&gid=&flag=1&filter=all&applist=all&refresh=0&aisortEndTime=0&aisortOffset=0&getAisort=0&aisortBeginTime=0&pagenum=1&externparam=undefined&firstGetGroup=0&icServerTime=0&mixnocache=0&scene=0&begintime=undefined&count=10&dayspac=undefined&sidomain=qzonestyle.gtimg.cn&useutf8=1&outputhtmlfeed=1&rd=0.14732353980032675&usertime=1580102440156&windowId=0.47149856105620036&g_tk=&qzonetoken=&g_tk= ##### 需要Cookie 31.QQ空间图片说说查看 https://h5.qzone.qq.com/proxy/domain/plist.photo.qq.com/fcgi-bin/cgi_floatview_photo_list_v2?g_tk=&topicId=&picKey=&cmtNum=10&inCharset=utf-8&outCharset=utf-8&uin=&hostUin=&appid=311 g_tk必填,pickey随便填但不可为空,topicID必填,uin为自己的QQ号,hostUin为对方QQ号 ##### 需要Cookie 32.QQ查询业务(PK) https://club.vip.qq.com/guestprivilege?friend=QQ号 ##### 需要vip.qq.com的cookie
2021年08月06日
377 阅读
8 评论
5 点赞
1
2