
25.10.2009, 16:51
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
С нами:
9029260
Репутация:
23
|
|
Сообщение от Komyak
Помогите разобраться с кодом:
PHP код:
<?php
$handler=fopen('log.txt','a+');
$zapros = 'inurl:"/?p=1" inurl:"ru"';
$request = 'http://www.google.com/ie?q='.urlencode(trim($zapros)).'&num=100&hl=ru&lr=&start=1&sa=N';
$result = file_get_contents($request);
$regulyar='/((?:http:\/\/)[\-\,\.\,A-Za-z1-9]*(.?)[a-z]*[\=\,\?\,\/a-z1-9]*).*?/isU';
if (preg_match_all ($regulyar, $result, $matches))
{
for ($i=0; $i<count($matches[0]); $i++)
{
$httpurl1=$matches[1][$i];
$serp[] = $httpurl1;
}}
$log = implode('\n',$serp);
fwrite($handler,$log);
fclose($handler);
echo 'Данные были сохранены в log.txt';
?>
Понимаю, выглядит дико и ужасно, но один из первых опытов.
Получается две проблемы:
1.Результат записывается в одну строчку, на нуледе читал что нужно использовать U, но не помогает.
И вторая проблема, не могу никак справиться с изменением "start=$nomer" номера страницы при парсинге.
Помогите пожалуйста.
Здесь в теме похожий скрипт, но не могу никак приладить функцию.
$httpurl1=$matches[1][$i];
Ошыбка в етой строке, тут переменная $httpurl1 постоянно перезаписиваеться. Надо сделать ее масивом типа так $httpurl1[], а если хочеш оставить ее строкой то надо использовать конкатенацию строк
$httpurl1 .= $matches[1][$i]; // точку добавить перед присвоением значения.
Че то я загнался, не посмотрел что ты в следуещей строке записиваеш в масив $serp[].
Короче не знаю...
Последний раз редактировалось Patronik; 25.10.2009 в 16:59..
|
|
|