| |
|
|
| | Обнаружил странную вещь: если скачать страницу сайта посредством оператора
$buff = file_get_contents($link); // Открываем страницу сайта
|
то получаем один текст. А если просто открыть эту страницу броузером IE и затем сохранить, то получаем другой текст!
И отличие в том, что в первом случае текст не полный - не хватает нескольких абзацев!
Как такое возможно???
И можно ли это как-то исправить?. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.06.2007 в 17:52)
| | | Может быть они отдают страницы в зависимости от поля User-Agent в заголовках? Или некоторые строки создаются через javascript, поэтому скрипт не может их выполнить. Попробуй отключить JS в браузере. | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.06.2007 в 17:52)
| | | Попробуйте вместо file_get_contents использовать ss_file_get_contents, описание ниже.
<?php
function ss_file_get_contents($url,$r_headers=false){
$NL=chr(13).chr(10);
$arr=parse_url($url);
$s=fsockopen($arr['host'],80);
fputs($s,'GET '.(!empty($arr['path'])?$arr['path']:'/').(!empty($arr['query'])?'?'.$arr['query']:'').' HTTP/1.0'.$NL.'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*'.$NL.'Accept-Language: ru'.$NL.'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'.$NL.'Host: '.$arr['host'].$NL.'Connection: Close'.$NL.$NL);
$headers='';
while(!feof($s)&&($t=fgets($s,2048))!==$NL)$headers.=$t;
$page='';
while(!feof($s))$page.=fgets($s,2048);
fclose($s);
return ($r_headers?$headers.$NL:'').$page;
}
?>
|
| |
| |
|
|
| |
|
|
| |
для: sms-send
(04.06.2007 в 18:04)
| | | Если я правильно понял, то входным параметром является $url, то есть перед этой функцией должен быть задан параметр
$url = "http://test.ru/" ;
|
Так?
А выходным параметром, в котором будет находиться полностью считанный код страницы, является $page.
Верно?
Но если так, то у меня $page - голяк... | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.06.2007 в 18:35)
| | | Но если так, то у меня $page - голяк...
А при чем тут вообще названия переменных? | |
| |
|
|
| |
|
|
| |
для: Unkind
(04.06.2007 в 18:43)
| | | Я не понимаю, как запустить эту функцию.
Я вижу у нее два аргумента - $url и $r_headers. Один из них задан.
По идее, выходной параметр функции указывается в return, но там не переменная, а целая конструкция, и я не знаю, что с ней делать.
Итого:
Есть $url = "http://test.ru/" ;
И надо, чтобы содержимое этой страницы оказалось в переменной $abc.
Как этого достичь? | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.06.2007 в 18:47)
| | | Хм...Я не перестаю удивляться.
<?php
function ss_file_get_contents($url,$r_headers=false){
$NL=chr(13).chr(10);
$arr=parse_url($url);
$s=fsockopen($arr['host'],80);
fputs($s,'GET '.(!empty($arr['path'])?$arr['path']:'/').(!empty($arr['query'])?'?'.$arr['query']:'').' HTTP/1.0'.$NL.'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*'.$NL.'Accept-Language: ru'.$NL.'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'.$NL.'Host: '.$arr['host'].$NL.'Connection: Close'.$NL.$NL);
$headers='';
while(!feof($s)&&($t=fgets($s,2048))!==$NL)$headers.=$t;
$page='';
while(!feof($s))$page.=fgets($s,2048);
fclose($s);
return ($r_headers?$headers.$NL:'').$page;
}
$abc = ss_file_get_contents("http://test.ru/");
?>
|
| |
| |
|
|
| |
|
|
| |
для: Unkind
(04.06.2007 в 19:01)
| | | Собственно, я руководствовался Самоучителем стр.53, но, видимо, не так его понял.
Функция заработала, спасибо! | |
| |
|
|
| |
|
|
| |
для: Владимир55
(04.06.2007 в 18:35)
| | | Входным параметром является та адресная строка (от http:// до конца) которую Вы набираете в браузере. Текст функция вернет в качестве результата. | |
| |
|
|