다음 스크립트로 file_get_contents를 통해 웹 사이트를 동적으로로드합니다.일부 그림이로드되지 않음 (CSS 문제)
<?php
header('Content-Type: text/html; charset=iso-8859-1');
$url = (substr($_GET['url'], 0, 7) == 'http://') ? $_GET['url'] : "http://{$_GET['url']}";
$base_url = explode('/', $url);
$base_url = (substr($url, 0, 7) == 'http://') ? $base_url[2] : $base_url[0];
if (file_get_contents($url) != false) {
$content = @file_get_contents($url);
// $search = array('@(<a\s*[^>]*href=[\'"]?(?![\'"]?http))@', '|(<img\s*[^>]*src=[\'"]?)|');
// $replace = array('\1proxy2.php?url=', '\1'.$url.'/');
// $new_content = preg_replace($search, $replace, $content);
function prepend_proxy($matches) {
$url = (substr($_GET['url'], 0, 7) == 'http://') ? $_GET['url'] : "http://{$_GET['url']}";
$prepend = $matches[2] ? $matches[2] : $url;
$prepend = 'http://h899310.devhost.se/proxy/proxy2.php?url='. $prepend .'/';
return $matches[1] . $prepend . $matches[3];
}
function imgprepend_proxy($matches2) {
$url = (substr($_GET['url'], 0, 7) == 'http://') ? $_GET['url'] : "http://{$_GET['url']}";
$prepend2 = $matches2[2] ? $matches2[2] : $url;
$prepend2 = $prepend2 .'/';
return $matches2[1] . $prepend2 . $matches2[3];
}
$new_content = preg_replace_callback(
'|(href=[\'"]?)(https?://)?([^\'"\s]+[\'"]?)|i',
'prepend_proxy',
preg_replace_callback(
'|(src=[\'"]?)(https?://)?([^\'"\s]+[\'"]?)|i',
'imgprepend_proxy',
$content
)
);
echo "<base href='http://{$base_url}' />";
echo $new_content;
} else {
echo "Sidan kan inte visas";
}
?>
이제 일부 사진이 웹 사이트에 표시되지 않는 문제가 있습니다. 예를 들어 CSS 링크가있는 사이트를 예로들 수 있습니다. 그것은 내가 생각하는 CSS 문제이다.
당신은 내가 무슨 뜻인지 보려면 여기를 스크립트를 테스트 할 수 있습니다
http://h899310.devhost.se/proxy/index.html
가 어떻게이 문제를 해결할 수 있습니까?
Okey, 그래서 질문이 하나 있습니다. .CSS 파일인지 확인하려면 어떻게해야합니까? 파일 앞에 $ url 만 붙이십시오. IMG prepend 함수와 마찬가지로, CSS를 사용하십시오. 그게 내가 생각하는대로 풀 수있을거야. 하지만 어떻게해야할지 모르겠다. –