Вытащить данные из сайта

Статус
В этой теме нельзя размещать новые ответы.

smertnik

Постоялец
Регистрация
5 Июн 2006
Сообщения
68
Реакции
30
Здравствуйте.

Пишу регулярку для разбора сайта
PHP:
preg_match_all('`<tr id="[^"]+">\s*<td>\s*<a [^>]+>.+?</a>\s*</td>\s*<td>\s*.*?<br />\s*<a [^>]+href="([^"]+)">\s*([^<]+)</a>\s*</td>\s*<td>(.*)[^]+<br[^>]+>(<b style[^<]+</b>\s*|\s*)</td>\s*\s*<td>([^<]+)</td>\s*<td>([^<]+)</td>\s*<td>[^<+]*</td>\s*<td>[^<]+</td>\s*<td>([^<]+)</td>\s*<td>([^<]+)</td>`si', $res_page, $customers)
Вот только пытаюсь запустить на сервере, в итоге пустой массив. Проверяю на сайте , работает как часы.

Есть такой еще вариант
PHP:
preg_match_all('`<tr id="[^"]+">\s*<td>\s*<a [^>]+>.+?</a>\s*</td>\s*<td>\s*.*?<br />\s*<a [^>]+href="([^"]+)">\s*([^<]+)</a>\s*</td>\s*<td>(.*?)\s*<[^<]+?>.*\s*<[^<]+?>\s*</td>\s*<td>([^<]+)</td>\s*<td>([^<]+)</td>\s*<td>[^<+]*</td>\s*<td>[^<]+</td>\s*<td>([^<]+)</td>\s*<td>([^<]+)</td>`si', $res_page, $customers)
, он работает, но один из столбцов таблицы может быть 2х видов, поэтому добавил в регулярку
PHP:
'(<b style[^<]+</b>\s*|\s*)'
, но работать отказывается.

Первый вариант:
Код:
<td> ГОСУДАРСТВЕННОЕ УЧРЕЖДЕНИЕ ЗДРАВООХРАНЕНИЯ ГОРОДА МОСКВЫ ГОРОДСКАЯ КЛИНИЧЕСКАЯ БОЛЬНИЦА № 13 ДЕПАРТАМЕНТА ЗДРАВООХРАНЕНИЯ Г.МОСКВЫ
                <br /><b>торги проводит государственный заказчик</b>
                <br /><b style="color: Red;"> заказ размещается среди субъектов малого предпринимательства </b>
                </td>
Второй вариант:
Код:
<td> ГОСУДАРСТВЕННОЕ УЧРЕЖДЕНИЕ УПРАВА ЛОСИНООСТРОВСКОГО РАЙОНА  ГОРОДА МОСКВЫ
                <br /><b>торги проводит государственный заказчик</b>
                <br />
                </td>
 
Поправил критические ошибки в регулярке, теперь попробуй
Код:
$re='
{
<tr\ id="[^"]+">\s*

<td>\s*<a\ [^>]+>.+?</a>\s*</td>\s*
<td>\s*.*?<br\ />\s*<a\ [^>]+href="([^"]+)">\s*([^<]+)</a>\s*</td>\s*
<td>(.*?)<br[^>]+>(<b style[^<]+</b>\s*|\s*)</td>\s*
<td>([^<]+)</td>\s* 
<td>([^<]+)</td>\s*
<td>[^<+]*</td>\s*
<td>[^<]+</td>\s*
<td>([^<]+)</td>\s*
<td>([^<]+)</td>
}six';
 
Вот доработал, может кому пригодится, пока полет нормальный)
PHP:
preg_match_all('`<tr id="[^"]+">\s*<td>\s*<a [^>]+>.+?</a>\s*</td>\s*<td>\s*.*?<br />\s*<a [^>]+href="([^"]+)">\s*([^<]+)</a>\s*</td>\s*<td>(.*?)\s*<[^<]+?>.*\s*<[^<]+?>(?:<b style[^<]+</b>\s*|\s*)</td>\s*<td>([^<]+)</td>\s*<td>([^<]+)</td>\s*<td>(?:[^<]+<a[^<]+</a>[^<]+|[^<+]*)</td>\s*<td>(?:[^<]+<a[^<]+</a>[^<]+|[^<+]*)</td>\s*<td>([^<]+<a[^<]+</a>[^<]+|[^<+]*)</td>\s*<td>([^<]+<a[^<]+</a>[^<]+|[^<]+)</td>`', $res_page, $customers)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху