匹配的规则不能用 "//<script.*<//script>//i",因为它不能匹配到换行符,那么多行js就匹配不掉了。要用 "//<script[sS]*?<//script>//i"。里面的?表示尽可能少重复,也就是匹配最近的一个<//script>。
源码范例:
代码如下 | 复制代码 |
<?php
header("Content-type:text//html;charset=utf-8"); $str = '<script type="text//javascript"" width=100% src="dd.js"><//script> 测试php正则匹配掉js代码<script type="text//javascript"" width=100% src="123.js"><//script> <script type="text//javascript"> var aa = "sdsds"; alert(aa); <//script> 测试php正则匹配掉js代码'; www.111Cn.net
$newstr = preg_replace($preg,"",$str,3); ////第四个参数中的3表示替换3次,默认是-1,替换全部 echo $newstr;
|
扩展 Overlay 模块头部显示用户头像实例
在你的自定义模块中加入overlay脚本JS文件,通过overlay的钩子:
代码如下 | 复制代码 |
function mymodule_overlay_child_initialize() { /** |
在overlay-child.js文件中加入以下Javascript 代码:
代码如下 | 复制代码 |
(function ($) { |
完成后,你就可以看到如上面的图片的效果。
修改overlay覆盖层的宽度和隐藏元素实例
下面这个例子向你展示如何修改overlay (覆盖层) 内的内容,当一个指定的节点类型(test)被展示在overlay 覆盖层。这个脚本向你展示修改overlay层的宽度为450px 和 隐藏一些不想见到的元素。
在你的模块中同样需要想上面的例子那样加入overlay-child.js脚本。
在overlay-child.js文件中加入以下Javascript 代码:
代码如下 | 复制代码 |
(function ($) { |
如果你想修改所有overlay层里的布局,请找到overlay.tpl.php然后修改它。
今天在调试腾讯微博接口时,出现一个错误,找了网上都没有相关资料,最后自己调通了,故发布此博文,避免各位phper重复造轮子。
错误信息:
代码如下 | 复制代码 |
stdClass Object [errcode] => 102 |
在腾讯微博开放平台的官方资料中,未发现解释此错误代码102的开发文档。经过与腾讯微博PHP SDK对比后发现少了一个参数。
解决错误代码102的办法
在请求用户资料的参数中oauth_version是必填的,而且在OAuth2中,它的值必须为2.a。
请求的参数中,OAuth2部分需包含:
字段 说明
代码如下 | 复制代码 |
oauth_consumer_key appkey Drupal 腾讯微博登录实例代码 |
注意:
加上字段后需要重新从登录页面重新授权一次,不然会出现错误“check sign error” 错误代码36。
以下重复刷新接口导致的签名错误返回值:
代码如下 | 复制代码 |
stdClass Object [errcode] => 36 |
获取腾讯微博用户资料
获取当前登录用户的个人资料 user/info 接口返回值的字段说明:
代码如下 | 复制代码 |
{ errcode : 返回错误码, msg : 错误信息, ret : 返回值,0-成功,非0-失败, data : { birth_day : 出生天, birth_month : 出生月, birth_year : 出生年, city_code : 城市id, comp : { begin_year : 开始年, company_name : 公司名称, department_name : 部门名称, end_year : 结束年, id : 公司id }, country_code : 国家id, edu : 教育信息 { departmentid : 院系id, id : 教育信息记录id, level : 学历级别, schoolid : 学校id, year : 入学年 }, fansnum : 听众数, favnum : 收藏数, head : 头像url, homecity_code : 家乡所在城市id, homecountry_code : 家乡所在国家id, homepage : 个人主页, homeprovince_code : 家乡所在省id, hometown_code : 家乡所在城镇id, idolnum : 收听的人数, industry_code : 行业id, introduction : 个人介绍, isent : 是否企业机构, ismyblack : 是否在当前用户的黑名单中,0-不是,1-是, ismyfans : 是否是当前用户的听众,0-不是,1-是, ismyidol : 是否是当前用户的偶像,0-不是,1-是, isrealname : 是否实名认证,1-已实名认证,2-未实名认证, isvip : 是否认证用户,0-不是,1-是, location : 所在地, mutual_fans_num : 互听好友数, name : 用户帐户名, nick : 用户昵称, openid : 用户唯一id,与name相对应, province_code : 地区id, regtime : 注册时间, send_private_flag : 是否允许所有人给当前用户发私信,0-仅有偶像,1-名人+听众,2-所有人, sex : 用户性别,1-男,2-女,0-未填写, tag : 标签 { id : 个人标签id, name : 标签名 }, tweetinfo : 最近的一条原创微博信息 { city_code : 城市码, country_code : 国家码, emotiontype : 心情类型, emotionurl : 心情图片url, from : 来源, fromurl : 来源url, geo : 地理位置信息, id : 微博唯一id, image : 图片url列表, latitude : 纬度, location : 发表者所在地, longitude : 经度, music : 音频信息 { author : 演唱者, url : 音频地址, title : 音频名字,歌名 }, origtext : 原始内容, province_code : 省份码, self : 是否自已发的的微博,0-不是,1-是, status : 微博状态,0-正常,1-系统删除,2-审核中,3-用户删除,4-根删除, text : 微博内容, timestamp : 服务器时间戳,不能用于翻页, type : 微博类型,1-原创发表,2-转载,3-私信,4-回复,5-空回,6-提及,7-评论, video : 视频信息 { picurl : 缩略图, player : 播放器地址, realurl : 视频原地址, shorturl : 视频的短url, title : 视频标题 } }, tweetnum : 发表的微博数, verifyinfo : 认证信息, exp : 经验值, level : 微博等级 }, seqid : 序列号 } |
剩下的事就非常容易了,处理你自己程序部分的逻辑业务。
下面我来给各位朋友推荐一个php有道翻译api调用方法,这里我们利用了file_get_contents函数直接读取由api返回的数据进行处理了,希望此例子对大家会有所帮助。
调用之前我们需申请一个有道翻译API数据接口的key,地址如
http://fanyi.youdao.com/openapi?path=data-mode
方法说明,数据接口
http://fanyi.youdao.com/openapi.do?keyfrom=<keyfrom>&key=<key>&type=data&doctype=<doctype>&version=1.1&q=要翻译的文本
参数说明:
type - 返回结果的类型,固定为data
doctype - 返回结果的数据格式,xml或json或jsonp
version - 版本,当前最新版本为1.1
q - 要翻译的文本,不能超过200个字符,需要使用utf-8编码
errorCode:
0 - 正常
20 - 要翻译的文本过长
30 - 无法进行有效的翻译
40 - 不支持的语言类型
50 - 无效的key
例子
代码如下 | 复制代码 |
$url = "http://fanyi.youdao.com/openapi.do?keyfrom=xujiangtao&key=1490852988&type=data&doctype=json&version=1.1&q=".$content; |
注意:
使用API key 时,请求频率限制为每小时1000次,超过限制会被封禁。
如果您的应用确实需要超过每小时1000次请求,请与 translate-service@corp.youdao.com 联系。 并提供您的应用的详细信息(名称、功能、网站地址、使用API的方式、API key、预计访问频率、是否商业行为、截屏等等) 以及该应用访问有道翻译API时所使用的服务器IP,审核通过后可放宽访问限制。
声明
1、本Demo做的比较简单,未对密码及验证码等对错做验证,只是做登陆演示。
2、QQ是个比较隐私的东西,那么请您用测试号登陆本软件,先小人后君子吧。
本站与最新WebQQ登陆协议相关文章
WebQQ二次登陆失败{“retcode”:103,”errmsg”:”"}
解决办法
重新抓了一次包,发现现在WebQQ将登陆加入SSL层也就是Https在第一次登陆的时候,返回的数据如下:
代码如下 | 复制代码 |
ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=你的QQ号&service=login&nodirect=0&ptsig=一串加密数据s_url=http%3a%2f%2fweb2.qq.com%2floginproxy.html%3flogin2qq%3d1%26webqq%5ftype%3d10&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0®master=0','0','登录成功!', 'I'); |
上述数据中包含一个回调地址:
代码如下 | 复制代码 |
<a href="http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin">http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin</a>=你的QQ号&service=login&nodirect=0&ptsig=一串加密数据s_url=http%3a%2f%2fweb2.qq.com%2floginproxy.html%3flogin2qq%3d1%26webqq%5ftype%3d10&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0®master=0 |
访问上面的地址(302跳转,注意Cookie的获取),获取到一个Cookie名为p_skey,将这个Cookie在二次登陆的时候,加入到Cookie中即可实现二次登陆。
WebQQ最新登陆协议
1、获取验证码
方法:Get
地址:
代码如下 | 复制代码 |
https://ssl.ptlogin2.qq.com:443/check?uin=958736715&appid=1003903&js_ver=10041&js_type=0&login_sig=Mge3PexTk00li3ipMUlHCzouT0xU*8MU6YkkZsIUo8*zQKRTM2rwPUOFbhbGw1No&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html&r=0.9403657828909222 |
Cookie:提交无。返回ptvfsession或verifysession
2、第一次登陆
方法:Get
地址:
代码如下 | 复制代码 |
https://ssl.ptlogin2.qq.com:443/login?u=【QQ号码】&p=【加密后的密码】&verifycode【验证码】&webqq_type=40&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D40&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=3-12-12775&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10041&login_sig=Mge3PexTk00li3ipMUlHCzouT0xU*8MU6YkkZsIUo8*zQKRTM2rwPUOFbhbGw1No |
Cookie:提交ptvfsession或verifysession,返回pt2gguin、uin 、skey、ETK、superuin、superkey、supertoken 、ptisp、RK、ptuserinfo、ptcz 、ptcz、airkey、ptwebqq 。
3、第一次登陆成功后返回回调地址
方法:Get
地址:
代码如下 | 复制代码 |
http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=【QQ号码】&service=login&nodirect=0&ptsig=tLfZcSFkHNP57Lg0tPtLM6XLh73XeghnEH3pTFyHCLY_&s_url=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D40&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0®master=0 |
Cookie:提交ptvfsession、verifysession、skey、ptcz:、ptwebqq、RK、superkey、supertoken。返回pt2gguin、uin、skey、p_uin、p_skey、pt4_token。
4、第二次登陆
方法:Post
地址:http://d.web2.qq.com/channel/login2
Cookie:提交ptvfsession、verifysession、skey、ptcz:、ptwebqq、RK、superkey、supertoken、p_skey、pt4_token、uin、p_uin、ptui_loginuin。
其他细节本文不再叙述,如果还有其他问题,请自行采取抓包软件,对WebQQ登陆进行抓包,无太大的技术含量,各位看官自行努力。
如果您参照上述两篇文章依然无法解决你的问题 了,那只有检查其它原因了。