Я работаю над проектом, который включает в себя выборку страниц с помощью cURL или file_get_contents. Проблема в том, что, когда я пытаюсь выполнить эхо-вывод html, результат кажется отличным от исходной страницы, но не все изображения отображаются. Пожалуйста, я хотел бы знать, есть ли решение. Мой код
<?php //Get the url $url = "http://www.google.com"; //Get the html of url function get_data($url) { $ch = curl_init(); $timeout = 5; //$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.XYZ Safari/525.13."; $userAgent = "IE 7 – Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"; curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $data = curl_exec($ch); curl_close($ch); return $data; } $html = file_get_contents($url); echo $html; ?>
благодаря
Вы должны использовать <base>
чтобы указать базовый url для всех относительных ссылок:
Если вы зависаете http://example.com/thisPage.html
добавьте base
тег в свой эхо-результат ''. Это должно быть технически в <head>
, но это будет работать:
echo '<base href="http://example.com/" />'; echo $html;
Живой пример w <base>
сломан w / o <base>
Использовать это
//Get the html of url function get_data($url) { $ch = curl_init(); $timeout = 5; //$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.XYZ Safari/525.13."; $userAgent = "IE 7 – Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)"; curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_FAILONERROR, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); $data = curl_exec($ch); curl_close($ch); return $data; } $parse = parse_url($url); $count = "http://".$parse['host'].dirname($parse['path'])."//"; $page = str_replace("<head>", "<head>\n<base href=\"" . $count . "\" />", $page); $page = str_replace("<HEAD>", "<head>\n<base href=\"" . $count . "\" />", $page); echo $page; ?>