Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Обработка регулярными выражениями


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

Код

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

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)