京東聯盟開發(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;
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM