Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
event
Отправлено: 10 Февраля, 2015 - 10:56:19
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Помогите пожалуйста с регуляркой, нужно спарсить ссылки на новости из этой страницы: _http://edu.ru/index.php?page_id=5&topic_id=19

Пробую так:
PHP:
скопировать код в буфер обмена
  1. $site = file_get_contents("http://www.edu.ru/index.php?page_id=5&topic_id=19");
  2.  
  3. preg_match_all('#<td class="content"><a href="(.*)">(.*)</a></td>#', $site, $v);
  4.  
  5. foreach($v[1] as $val) {
  6.         echo $val . "<br />";
  7. }
  8.  


Работает, парсит, но как-то плохо. Нужно только ссылки.

Заранее спасибо.

(Отредактировано автором: 10 Февраля, 2015 - 11:05:10)

 
 Top
RickMan
Отправлено: 10 Февраля, 2015 - 11:04:20
Post Id


Участник


Покинул форум
Сообщений всего: 1033
Дата рег-ции: Май 2012  


Помог: 30 раз(а)




del

(Отредактировано автором: 10 Февраля, 2015 - 11:04:49)

 
 Top
event
Отправлено: 10 Февраля, 2015 - 11:25:24
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Все, сделал сам вот так:

PHP:
скопировать код в буфер обмена
  1. $site = file_get_contents("http://www.edu.ru/index.php?page_id=5&topic_id=19");
  2.  
  3. preg_match_all('#<td class="content"><a href="(.*?)">(.*?)</a>#', $site, $v);
  4.  
  5. foreach($v[1] as $val) {
  6.         echo $val . "<br />";
  7. }
 
 Top
GoDr
Отправлено: 10 Февраля, 2015 - 11:32:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


Помог: 17 раз(а)




event пишет:
Работает, парсит, но как-то плохо. Нужно только ссылки.
какие ссылки то? Все на сайте?

PS
замучил ты уже этот сайт! Да скопируй ты его себе просто на комп Радость

PSS
у меня есть в проекте несколько отладочных функций. Очень помогают в выводе результатов, особенно массивов и объектов
PHP:
скопировать код в буфер обмена
  1. function _v($var, $i = false)
  2. {
  3.     echo '<pre style="border:2px solid #ff0000;color:#ff0000;padding:5px;background-color:#ffffff;">';
  4.     var_dump($var);
  5.     echo "</pre>";
  6.     if ($i) {
  7.         die();
  8.     }
  9. }
  10.  
  11. function _p($var, $i = false)
  12. {
  13.     echo '<pre style="border:2px solid #ff0000;color:#ff0000;padding:5px;background-color:#ffffff;">';
  14.     print_r($var);
  15.     echo "</pre>";
  16.     if ($i) {
  17.         die();
  18.     }
  19. }
  20.  
  21. function _a($var = null, $i = false)
  22. {
  23.     echo '<span style="border:1px solid #ff0000;color:#ff0000;padding:1px;background-color:#ffffff;">';
  24.     if (is_null($var)) {
  25.         echo '+++++++++';
  26.     } else {
  27.         echo $var;
  28.     }
  29.     echo '</span>';
  30.     if ($i) {
  31.         die();
  32.     }
  33. }
  34.  
  35. function _m(){
  36.     static $var = 0;
  37.     echo '<pre style="border:2px solid #ff0000;color:#ff0000;padding:5px;background-color:#ffffff;">';
  38.     echo $var;
  39.     echo "</pre>";
  40.     $var++;
  41. }
  42.  
  43.  

_v() - аналог var_dump()
_p() - аналог print_r()
Первый параметр переменная, второй если задан не ноль приведёт к остановке кода (очень помогает, когда нужно увидеть ошибку/переменную и срочно остановить код)
Вывод подсвечивается красной рамкой и форматирован

_a() - аналог echo. Просто вывод строчной переменной. Аналогично подсвечивается красной рамкой, но не форматирован, т.е. просто вывод в контенте, хорошо заметен. Если параметр не задан, то просто выдаёт плюсики.

_m() - просто ставит метки по контенту. Каждый вывод увеличивает значение на один. Удобно для отладки сложных условий или циклов

и чтобы не писать это
PHP:
скопировать код в буфер обмена
  1. foreach($v[1] as $val) {
  2.         echo $val . "<br />";
  3. }
достаточно просто посмотреть результаты, всё понятно и наглядно
PHP:
скопировать код в буфер обмена
  1. // весь результат
  2. _p($v);
  3. // нужный
  4. _p($v[1]);


-----
Система управления веб-содержимым Lotos CMS
 
 Top
event
Отправлено: 10 Февраля, 2015 - 11:45:34
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 542
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




GoDr, спасибо. Подмигивание
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB