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
Форумы портала PHP.SU :: Версия для печати :: Регулярка
Форумы портала PHP.SU » » Вопросы новичков » Регулярка

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

1. event - 10 Февраля, 2015 - 10:56:19 - перейти к сообщению
Помогите пожалуйста с регуляркой, нужно спарсить ссылки на новости из этой страницы: _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.  


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

Заранее спасибо.
2. RickMan - 10 Февраля, 2015 - 11:04:20 - перейти к сообщению
del
3. event - 10 Февраля, 2015 - 11:25:24 - перейти к сообщению
Все, сделал сам вот так:

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. }
4. GoDr - 10 Февраля, 2015 - 11:32:44 - перейти к сообщению
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]);
5. event - 10 Февраля, 2015 - 11:45:34 - перейти к сообщению
GoDr, спасибо. Подмигивание

 

Powered by ExBB FM 1.0 RC1