Steve
Steve

Reputation: 71

Regexp is not working as expected

I want to fetch sku of the products,

Please help me to write regexp for this.

Here is my code -

$url = "http://api.findify.io/v1.0/store/search?callback=jQuery111206735094679573879_1458022087824&q=154701001&key=5b31ee91-78fa-48e1-9338-1748ca55028e&analytics%5Bkey%5D=5b31ee91-78fa-48e1-9338-1748ca55028e&analytics%5Bvisit%5D=true&analytics%5Buniq%5D=true&analytics%5Burl%5D=http%253A%252F%252Fwww.pandorasoem.com%252Fsearch%2523q%253D154637401&analytics%5Bbaseurl%5D=http%253A%252F%252Fwww.pandorasoem.com%252Fsearch%2523q%253D154637401&analytics%5Bhost%5D=www.pandorasoem.com&analytics%5Bwidth%5D=1920&analytics%5Bheight%5D=1200&analytics%5Binner_width%5D=1438&analytics%5Binner_height%5D=667&analytics%5Bdoc_width%5D=1438&analytics%5Bdoc_height%5D=915&analytics%5Bscroll_x%5D=0&analytics%5Bscroll_y%5D=0&analytics%5Bvisit_id%5D=Ts22zuHHGJRZc3U1&analytics%5Buniq_id%5D=BoeCUKSzgdML6C50&byPage=24&page=0&_=1458022087825";
$ch1= curl_init();
curl_setopt ($ch1, CURLOPT_URL, $url );
curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch1,CURLOPT_VERBOSE,1);
curl_setopt($ch1, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)');
curl_setopt ($ch1, CURLOPT_REFERER,'http://www.google.com');  //just a fake referer
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1,CURLOPT_POST,0);
//curl_setopt($ch1, CURLOPT_FOLLOWLOCATION, 20);
$htmlContent= curl_exec($ch1);
curl_close($ch1);
preg_match_all('/["\']?totalHits["\']?\s*:\s*(\d+)/i', $htmlContent, $count);
print_r($count);    

preg_match_all('/"sku".*:.*"(.*)".*/i', $htmlContent, $sku);
print_r($sku);

It showing blank array while fetching sku. It works for Totalhits.

Update URL

Upvotes: 1

Views: 49

Answers (1)

ogres
ogres

Reputation: 3690

Just remove the callback parameter from the URL and it will return the proper JSON, then you can convert JSON into an Array or an Object and do whatever you want

remove callback=jQuery111206735094679573879_1458022087824& from the URL

to convert JSON into an array use json_decode ( http://php.net/manual/en/function.json-decode.php )

so after you get $htmlContent , you can convert it with $jsonData = json_decode($htmlContent,true);

you can print_r json to check its keys/values,

or if you want to get list of sku-s

$skus = Array();
foreach($jsonData['data']['hits'] as $hit) {
    $skus[] = $hit['sku'];
}

Upvotes: 1

Related Questions