Приф всем, вот такой вопрос... Реально ли сделать грабер контента с html паги, ну пример странички HTML: HTML: <html> <head> <meta http-equiv="Content-Language" content="ru"> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title>Новость</title> </head> <body> <table cellpadding="0" cellspacing="0" width="644"> <tr> <td height="55" width="644" colspan="3" valign="top"><b><font size="7"> Супер сайт</font></b></td> </tr> <tr> <td height="253" width="90" valign="top">Навигация<p>1</p> <p>2</p> <p>3</p> <p>4</p> <p>5</td> <td height="253" width="424" valign="top"> <p align="left"><b>Новости:</b></p> <p>Итак, по последним данным нам стало....</td> <td height="253" width="130" valign="top">ССЫЛКИ<p> </p> <p>1</p> <p>2</p> <p>3</p> <p>4</p> <p> </td> </tr> <tr> <td height="59" width="644" colspan="3" valign="top"> <p align="center">копирайт</td> </tr> </table> </body> </html> Вот полный код страницы, можно ли на другом сайте каким-либо образом сграбить все что относится к этому куску кода: ... <p align="left"><b>Новости:</b></p> <p>Итак, по последним данным нам стало.... ... Можно или нет? Если да, то подскажите каким образом.
Regular Expressions используй и будет тебе счастье ------------------------------------------------- PHP: $pattern = '/(<p align="left"><b>Новости:<\/b><\/p><p>)(.*)(<\/td>)/' preg_match($pattern,$str,$cout) ------------------------------------------------------------------------- в $cout[2] будет лежать "Итак, по последним данным нам стало...." З.Ы.:РегЭксп примитивный,думаю профи подправят, но идею изложил
FreeNeDiX, используй теги [.php], [.html] PHP: $pattern = '#<p align="left"><b>Новости:</b></p><p>(.*)</td>#is' preg_match($pattern,$str,$cout)
В общем, нужен скрипт, который бы архивировал папки на сервере в .zip или .gzip, нашел такой скрипт http://slil.ru/24577297 , но он работает почему то только на локалке, а на сервере не хочет наверно из-за того что там safe mode: on. Может у кого-нибудь есть рабочий, что б в safe mode работал?
PHP: $sh = file_get_contents("http://www.site.ru/news.html", False); $sh = chop($sh); Только "allow_url_open" должно быть "on".
Там более 200 кб php кода, выложить не получается, форум выдает ошибку: Может тогда кто-нибудь сможет написать скрипт для архивирования папок на сервере при включенном safe mode?
Хмм, регулярные выражения значит, в принципе все должно работать, скажите что не так? <?php $url = "http://site.nu/news.html"; $content = file_get_contents($url); $pattern = '#<p align="left"><b>Новости:</b></p><p>(.*)</td>#is'; preg_match($pattern,$content,$out); print($out); ?> В итоге вместо нужной новости я вижу надпись Array. Что не так?
print_r($out); пробовал, не работает, точнее вместо Array, выводится Array ( ). Не print($out[0]; а print($out[0]);, иначе ошибка...хотя все равно не работает и высвечивается...точнее ничего не выводится на экран. Мистика...
Тебе дали нерабочую регулярку. Но тем не менее проверь, действительно ли в переменной $content содержится нужная страница. И нужно было проявить минимум смекалки, чтобы догодаться, что если переменная пустая, когда при echo $variable; ничего не выводится. Я не знаю кем надо быть, чтобы по этому поводу вопросы задавать. Аналогично по функции print_r. Только тут еще надо хотя-бы слегка быть знакомым с понятием массив. PHP: $pattern = "/<p\salign\=\"left\"\>\<b\>(.+?)\<\/b\>\<\/p\>\s+\<p\>(.+?)\<\/td\>/is";
Да, дейсвительно, спасибо тебе blaga. Вот полностью рабочий код: <?php $url = "http://site.nu/news.html"; $content = file_get_contents($url); $pattern = "@<td height=\"40\" valign=\"top\"><b>Новость:</b><p>(.*)</td>@isU"; preg_match_all($pattern, $content, $out); foreach($out[0] as $info) { echo("$info"); } ?>
Суть проблемы в том, что есть скрипт работает с определенным файлом, считывание и запись в него, как возможно заблокировать как нибудь допуск к этому файлу пока работает это скрипт, и от повторной запуски данного скрипта?
DIAgen, тебе нужна функция flock() if($fp=fopen($filename,'w') && flock($fp,LOCK_EX)) /*LOCK_EX - блокировка взаимоисключающего доступа(используется для записи)*/ { $rs=fwrite($fp,$content); flock($fp, LOCK_UN); //LOCK_UN снять блок fclose($fp); return $rs; } для чтения используй LOCK_SH
У меня такой вопрос я не могу подключить библиотеку php_sockets.dll(. Вроде всё делал так же как и при подключении библиотеки для работы с скуль( но скуль работает а это нет). За рание благодарен.
куда ты ставил? на локалхост? если да, то как? я ставил так: скопировал .dll в каталог %WINDIR%\SYSTEM и раскомментировал строчку ;extension=php_sockets.dll //string #587 в php.ini (раздел Динамические Загружаемые Расширения)