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. Java匹马行天下之JavaSE核心技术——反射机制

    Java反射机制 一.什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及 ...

  2. swagger 集成后发布到服务器报错[Could not find file 'D:\\home\\site\\wwwroot\\bin\\WebAPI.XML]

    webapi集成swagger后,在本地运行没有问题,但是发布到服务器上就有问题. 报错信息:Could not find file 'D:\\home\\site\\wwwroot\\bin\\We ...

  3. Windows+VS2017使用gRPC

    gRPC官方Windows安装说明: Install Visual Studio 2015 or 2017 (Visual C++ compiler will be used). Install Gi ...

  4. 初阶sql注入总结

    0x00 前言 sql注入是通过用户输入构造语句以实现目的.一句话,不要相信任何用户输入的内容,做好防护. 0x01 传参方式 传参方式一般通过get方式,或者post方式提交,前者的优点是效率高,后 ...

  5. 设计模式:单例(Sigleton)模式

    题目:设计一个类,我们只能生成该类的一个实例. 只能生成一个实例的类是实现了Singleton(单例)模式的类型. 相关知识: 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象 ...

  6. 01GitLab的使用——创建项目并上传到GitLab

    借鉴:https://jingyan.baidu.com/article/9c69d48fe68cce13c9024e9c.html 登录GitLab网站,创建一个项目上传地址:https://blo ...

  7. LDA-作为线性判别 降维 推导

    LDA 降维原理 前面对 LDA 作为作为分类器 有详细推导, 其核心就是 贝叶斯公式, 已知全概率, 求(条件概率)最大先验概率, 类似的问题. 而 LDA 如果作为 降维 的原理是: a. 将带上 ...

  8. Linux shell sed命令使用

    Linux处理文本文件的工具:     grep        过滤文件内容     sed            编辑文件内容     awk             正则表达式Regex      ...

  9. php-fpm编译安装脚本

      PHP是开源.轻量级.高效的开发语言,特别适合web项目开发,在中小型互联网公司中常用于开发web后端.PHP常与Nginx及MySQL数据库结合,搭建LNMP环境.以下为centos7系统下ph ...

  10. tf.gather_nd()

    tf.gather_nd( params, indices, name=None, batch_dims=0) TensorFlow链接:https://tensorflow.google.cn/ap ...