Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка регулярными выражениями, Получить данные из сайта и обработать их 
:(
    Опции темы
Denzil
  Дата 14.3.2010, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 14.3.2010

Репутация: нет
Всего: нет



Всем хорошего дня!
Вообщем я получаю данные с сайта и вывожу их на страницу

Код

function data($path,$host)
{
/*
$path путь к файлу скрипта, а так же передаваемые параметры
$host сграббливаемый хост (например, sasisa.ru)
*/
$fp = fsockopen($host, 80);
if (!$fp)
{
die('ошибка');
}
else
{
$out = "GET $path HTTP/1.0\r\n";
$out .= "Accept: image/gif, application/xhtml+xml, */*\r\n";
$out .= "Accept-Language: ru\r\n";
$out .= "Host: $host\r\n";

//прикинемся оперой-мини
$out .= "User-Agent: Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1716; ru; U; ssr)\r\n";

$out .= "Cache-Control: no-cache\r\n";
$out .= "Connection: Close\r\n\r\n";

fwrite($fp, $out);
$headers = "";

while ($str = trim(fgets($fp)))
$headers .= "$str\n";

$body = "";

while (!feof($fp))
$body .= fgets($fp);
fclose($fp);
}
//возвращаем данные
return $body;
}



$host='qipstatus.ru';


if (empty($_SERVER['QUERY_STRING']))
{
//начальная позиция
$path='/qip_status.php';
}
else
{
//новые параметры
$path='//qip_status.php?'.$_SERVER['QUERY_STRING'];
}



$s=data($path,$host);

//обрабатываем (ВТОРОЙ ЭТАП)
$s=process($s);


header('Content-type:text/html;charset=utf-8');




function process($s)
{

return $s;
}


//Выводим
print "$s";




После этого данные нужно обработать




Код




preg_match_all("/<TD CLASS=td_status>(.*)<\/TD>/U", $s, $massiv, PREG_PATTERN_ORDER);



function process($s)
{

return $s;
}


И вот тут парадокс. Данные, как вы поняли, находятся между тегами <TD CLASS=td_status></td>

Вот для примера, кусок информации, по которому регулярка успешно находит инфу

Код

///Пример, который работает
$mnogoteksta = " 
<TD CLASS=td_status>вфыгнапшыфгва</TD>  asdfasdfasdf</td> блабла   <TD CLASS=td_status>12134ца</TD>
";


Этот пример записывает в массив результат.
А вот если обрабатывать полученную по сокету html-информацию, то ничего не работает.

Код

print_r($massiv[0]); 
print "<br>";
print_r($massiv[1][0]); 
print "<br>";
print_r($massiv[1][1]); 

Я получаю только array

Скажите, в чем глюк?



Это сообщение отредактировал(а) Denzil - 14.3.2010, 18:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0734 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.