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的更多相关文章

  1. 京东联盟开发(12)——删除MySQL表中重复记录并且只保留一条

    本文介绍如何删除商品表中的一些重复记录. 有时,一条商品由于有多个skuid,比如某种手机有不同颜色,但价格.优惠等信息却是一致,导致其被多次收录.由于其各种条件基本类似,这样它在商品中多个sku都排 ...

  2. 用RegularJS开发小程序 — mpregular解析

    本文来自网易云社区. Mpregular 是基于 RegularJS(简称 Regular) 的小程序开发框架.开发者可以将直接用 RegularJS 开发小程序,或者将现有的 RegularJS 应 ...

  3. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

  4. iOS开发中的Html解析方法

    iOS开发中的Html解析方法 本文作者为大家介绍了在iOS开发中的Html解析方法,并同时提供了Demo代码的下载链接,Demo 解析了某个网站(具体可在代码中查看)的html网页,提取了图片以及标 ...

  5. 知名互联网公司校招 Java 开发岗面试知识点解析

    天之道,损有余而补不足,是故虚胜实,不足胜有余. 本文作者在一年之内参加过多场面试,应聘岗位均为 Java 开发方向.在不断的面试中,分类总结了 Java 开发岗位面试中的一些知识点. 主要包括以下几 ...

  6. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)

    转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/49992269 本文出自:[江清清的博客] (一).前言: [好消息] ...

  7. 如何用JS判断推广链接所属的客服

    今天有一个客户提出一个需求:网站有多个在线客服,每个客服都有自己的网站推广链接,当访客通过该客服的推广链接进入网站时,必须指定由该客服接待. 我的实现思路是获取推广链接中特定字符,然后判断字符对应的客 ...

  8. Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml

    Android开发:碎片Fragment完全解析   为了让界面可以在平板上更好地展示,Android在3.0版本引入了Fragment(碎片)功能,它非常类似于Activity,可以像 Activi ...

  9. php接口开发时,数据解析失败问题,字符转义,编码问题

    php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...

随机推荐

  1. torch.max

    torch.max() torch.max(input) -> Tensor Explation: ​ Returns the maximum value of all elements in ...

  2. 2019-11-29-WPF-测试触摸设备发送触摸按下和抬起不成对

    原文:2019-11-29-WPF-测试触摸设备发送触摸按下和抬起不成对 title author date CreateTime categories WPF 测试触摸设备发送触摸按下和抬起不成对 ...

  3. 史上最全的音视频SDK包分享给大家

    史上最全的音视频SDK包分享给大家 概述一下SDK功能: 项目 详情视频通信  支持多种分辨率的视频通信语音通信  提供语音通信,可支持高清宽带语音动态创建房间  可以根据需要,随时创建房间H5 支持 ...

  4. python类的实例化

    class Person(object): # 创建类 def __init__(self, name): # 构造函数 self.name = name def getName(self): # 类 ...

  5. java.util.DualPivotQuickSort的实现

    DualPivotQuickSort汇集了多种排序算法,称之为DualPivotQuickSort并不合适.不同的排序算法有不同的使用场景.看懂此文件,排序算法就算彻底搞懂了. 本文只介绍有用的代码片 ...

  6. 将Redis设置为后台启动

    Linux 在执行redis-server  /etc/redis.conf 时默认开启的是一个前台的进程,也就是说启动的redis 就做不了其他的操作了,只有关闭redis 才能做其他的操作.非常的 ...

  7. windows下查看webp格式图片

    关于webp 时下webp格式日渐势起,主流浏览器(IE: ???)已经开始支持webp,诸多互联网企业(Facebook 和 ebay,国内的有淘宝.腾讯和美团等)都已经在不遗余力的将webp应用到 ...

  8. rac启动维护笔记

    Ohasd.bin将产生4个代理启动相关的资源 (1)    oraagent:负责ora.asm.ora.evmd.ora.gipcd.ora.gpnpd.ora.mdnsd的启动和管理 (2)   ...

  9. C++ OpenSSL 之二:生成RSA文件

    1.等同于生成private key: openssl genrsa -out "save_path" 2048 2.代码如下 bool MakeRsaKeySSL(const c ...

  10. windows开启PostgreSQL数据库远程访问

    1.在PostgreSQL安装目录下data文件夹,打开pg_hba.conf文件,新增允许访问的ip 2.打开postgresql.conf,将listen_addresses = 'localho ...