Hi I know its a very common topic on StackOverFlow. I have already spent my entire week to search it out.
I have a url : abc.com/default.asp?strSearch=19875379
this further redirect to this url: abc.com/default.asp?catid={170D4F36-39F9-4C48-88EB-CFC8DDF1F531}&details_type=1&itemid={49F6A281-8735-4B74-A170-B6110AF6CC2D}
I have made my effort to get the final url in my php code using Curl but can’t make it.
here is my code:
<?php $name="19875379"; $url = "http://www.ikea.co.il/default.asp?strSearch=".$name; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); $a = curl_exec($ch); curl_close( $ch ); // the returned headers $headers = explode("n",$a); // if there is no redirection this will be the final url $redir = $url; // loop through the headers and check for a Location: str $j = count($headers); for($i = 0; $i < $j; $i++){ // if we find the Location header strip it and fill the redir var //print_r($headers); if(strpos($headers[$i],"Location:") !== false){ $redir = trim(str_replace("Location:","",$headers[$i])); break; } } // do whatever you want with the result echo $redir; ?>
it gives me url “abc.com/default.asp?strSearch=19875379” instead of this url “abc.com/default.asp?catid={170D4F36-39F9-4C48-88EB-CFC8DDF1F531}&details_type=1&itemid={49F6A281-8735-4B74-A170-B6110AF6CC2D}”
Thanks in advance for your kind help 🙂
Advertisement
Answer
Thank you everyone for helping me in my situation.
Actually I want to develop a scraper in php for ikea website used in Israel (in Hebrew). After putting a lot of hours I recognize that there is no server side redirection in url which I put to get the redirected url. It may be javascript redirection. I have now implemented the below code and it works for me.
<?php $name="19875379"; $url = "http://www.ikea.co.il/default.asp?strSearch=".$name; $ch = curl_init(); $timeout = 0; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $header = curl_exec($ch); $redir = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); //print_r($header); $x = preg_match("/<script>location.href=(.|n)*?</script>/", $header, $matches); $script = $matches[0]; $redirect = str_replace("<script>location.href='", "", $script); $redirect = "http://www.ikea.co.il" . str_replace("';</script>", "", $redirect); echo $redirect; ?>
Thanks again everyone 🙂