京东联盟开发(6)——推广链接解析SKUID
1、从推广方案中分析出价格及推广码
$keyword = "
【京东】长虹(CHANGHONG) L3 老人手机 移动/联通2G 老年机 双卡双待 咖啡 原价:168.00元
券后价:163.00元 购买链接:https://union-click.jd.com/jdc?d=s7inaP
---------------------------
【领券下单,更便宜】关注 东购 公众号,获取更多优惠!
"; $express_before = "/原价:(\d+.\d+)\s*元/i";
$express_after = "/券后价:(\d+.\d+) 元/i";
$express_url = "/jdc\?d=([a-zA-Z0-9]+)/i";
preg_match($express_before, $keyword, $matches_before);
preg_match($express_after, $keyword, $matches_after);
preg_match($express_url, $keyword, $matches_url); var_dump($matches_before);
var_dump($matches_after);
var_dump($matches_url);
2、302跳转取新的地址,并分析出skuid
$url= "https://union-click.jd.com/jdc?d=".$matches_url[1];
$skuid = url2skuid($url);
var_dump($skuid); // 推广短链接转skuid,并检查是否有券的产品 https://union-click.jd.com/jdc?d=A3Cp11
function url2skuid($url)
{
$result1 = http_request($url, false);
$express1 = "/hrl='(.+?)'/i";
preg_match($express1, $result1, $matches1);
if (!isset($matches1[1])){
return array('errcode'=> 1, 'msg'=>"获取跳转1失败");
}
$jumpurl1 = $matches1[1];
// var_dump($jumpurl1);
$result2 = http_request($jumpurl1, true);
// var_dump($result2);
if (!isset($result2["redirect_url"])){
return array('errcode'=> 2, 'msg'=>"获取跳转2失败");
}
$jumpurl2 = $result2["redirect_url"];
// var_dump($jumpurl2);
$express2 = "/\.jd\.com\/[a-z\.\/\?\=]{0,}(\d+)(\.html|\&)/i";
// $express2 = "/jingfen\.jd\.com\/item\.html?sku=(\d+)&/i";
preg_match($express2, $jumpurl2, $matches2);
// var_dump($matches2);
if (!isset($matches2[1])){
return array('errcode'=> 3, 'msg'=>"获取skuid失败");
}else{
if (!stristr($jumpurl2,"jingfen")){
return array('errcode'=> 4, 'msg'=>$matches2[1]." 无券");
}else{
return array('errcode'=> 0, 'msg'=>$matches2[1]);
}
}
} function http_request($url, $info = False)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);
if ($info){
$info = curl_getinfo($ch);
// $retURL = $info['url'];
curl_close($ch);
return $info;
}else{
curl_close($ch);
return $output;
}
}
京东联盟开发(6)——推广链接解析SKUID的更多相关文章
- 京东联盟开发(12)——删除MySQL表中重复记录并且只保留一条
本文介绍如何删除商品表中的一些重复记录. 有时,一条商品由于有多个skuid,比如某种手机有不同颜色,但价格.优惠等信息却是一致,导致其被多次收录.由于其各种条件基本类似,这样它在商品中多个sku都排 ...
- 用RegularJS开发小程序 — mpregular解析
本文来自网易云社区. Mpregular 是基于 RegularJS(简称 Regular) 的小程序开发框架.开发者可以将直接用 RegularJS 开发小程序,或者将现有的 RegularJS 应 ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
文顶顶iOS开发博客链接整理及部分项目源代码下载 网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...
- iOS开发中的Html解析方法
iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...
- 知名互联网公司校招 Java 开发岗面试知识点解析
天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)
转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...
- 如何用JS判断推广链接所属的客服
今天有一个客户提出一个需求:网站有多个在线客服,每个客服都有自己的网站推广链接,当访客通过该客服的推广链接进入网站时,必须指定由该客服接待. 我的实现思路是获取推广链接中特定字符,然后判断字符对应的客 ...
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml
Android开发:碎片Fragment完全解析 为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...
- php接口开发时,数据解析失败问题,字符转义,编码问题
php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...
随机推荐
- PyTorch中MaxPool的ceil_mode属性
PyTorch中的MaxPool(最大池化)有一个属性:ceil_mode,默认为False(地板模式),为True时是天花板模式.
- C# 简单日志帮助类LogHelper
调用: LogHelper.Debug(""); LogHelper.Info(""); LogHelper.Error(""); 项目添加 ...
- json时间格式化
//格式化日期字符串 String.prototype.jsonDateFormat = function (format) { var date, timestamp, dtObj timestam ...
- mac下搭建Apache服务器环境
mac下自带了一个Apache服务环境,所以不需要另外去下载,直接配置就好了. 一.启动Apache服务 在终端下输入 sudo apachectl start , 启动Apache服务.在浏览器输入 ...
- Mac下Appnium的Android的UI自动化环境搭建
1. 安装jdk:略 检查是否安装:执行命令java -version admindeMacBook-Pro-2:~ $ java -version java version "1.8.0_ ...
- Windows Server2008R2,ServerWin2012 R2设置自动登录注册表配置
serverWin2008 R2 2012自动登录一般是通过control userpasswords2 命令修改,其实注册表修改更简单.复制以下保存为xx.reg文件导入即可即可. Windows ...
- #pragma once和#ifndef
C语言中的头文件只是简单的复制粘贴. C语言中变量.函数.结构体的定义和声明两个过程是分离的.声明通常放在头文件中,为了防止重复声明,需要保证头文件中的内容在构建obj文件时只被包含一次.这可以通过# ...
- 字符串替换replace方法
字符串替换replace方法: http://www.w3school.com.cn/jsref/jsref_replace.asp http://www.cnblogs.com/skywang/ar ...
- jQuery中的动画(七)
一.jQuery对象样式相关方法1.设置高度和宽度height([num]) [获取或设置样式属性height的值]获取匹配元素中第一个元素的height样式值或给匹配所有元素设置height样 ...
- uwsgi no python application found错误的解决(python3+centos6)
近期在努力把自己的项目从python2转到python3上,因为生产环境无法抛弃centos7,所以只好在centos7上安装了python3.装好了python3,将python命令软连接改成pyt ...