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 :: работа DomDocument

 PHP.SU

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


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

> Описание: Немону разобраться как найти родительский тэг
t0xas
Отправлено: 07 Октября, 2011 - 14:23:07
Post Id



Новичок


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


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




Добро времени всем, пишу парсер html, из-за здорового цикла сервак начинает выкидывать с криком недостатка памяти. Пришлось переделывать алгоритм. И так что мне нужно.
Существует функция, которая находит ссылку, от этой ссылке мне нужно искать родительские тэги, как это сделать, не могу разобраться. Вот моя недофункция.

PHP:
скопировать код в буфер обмена
  1.  
  2. function findParentTags($url, $linka) {
  3.                 echo "\n=====findParentTags======\n";
  4.                 echo $url;
  5.                 echo "\n";
  6.                 echo $linka;
  7.        
  8.                 $dom = new DomDocument();
  9.                 $dom->loadHTMLFile($url);
  10.                 $link = $dom->getElementsByTagName("a");
  11.                 echo "\n========gogogo=========\n";
  12.                
  13.                 $number=0;
  14.                 $flag = FALSE;
  15.                 while($link->item($number)->textContent != NULL) {
  16.                         if(stristr($element = $link->item($number)->getAttribute('href'), $linka)){
  17.                                 $flag = TRUE;
  18.                                 break;
  19.                         }
  20.                         $number++;
  21.                 }
  22.                
  23.                
  24.                 if($flag)
  25.                         echo $element = $link->item($number)->getAttribute('href');
  26.                 else
  27.                         echo "\nNot finded link\n";
  28.                 echo "\n==============end =========\n";
  29.          /*а вот тут надо найти родительские тэги*/
  30.                 sleep(5);
  31.                
  32.                
  33.         }
  34.  
 
 Top
caballero
Отправлено: 07 Октября, 2011 - 14:57:07
Post Id


Активный участник


Покинул форум
Сообщений всего: 5998
Дата рег-ции: Сент. 2011  
Откуда: Харьков


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




а разве элемента DOM нет свойства parent?
Если нет то надо xpath использовать
а еще лкчше не страдать фигней и взять готовые html парсеры типа phpquery или querypath
там и xpath есть и главное селекторы аналогичные селекторам jQwery


-----
Бесплатная система складского учета с открытым кодом https://zippy[dot]com[dot]ua/zstore
 
 Top
t0xas
Отправлено: 07 Октября, 2011 - 15:00:39
Post Id



Новичок


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


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




caballero пишет:
а разве элемента DOM нет свойства parent?
Если нет то надо xpath использовать
а еще лкчше не страдать фигней и взять готовые html парсеры типа phpquery или querypath
там и xpath есть и главное селекторы аналогичные селекторам jQwery



Я пробовал два разных парсера, simple и phpQuery, у меня вылетала ошибка сегментации, докопался до админа. он сказал чтобы я память смотрел. Иногда бывает память переполняет

Продолжаю страдать фигней к сожалению.

Я уже начал копать XPath

PHP:
скопировать код в буфер обмена
  1.  
  2.         $dom = new DomDocument();
  3.                 $dom->loadHTMLFile($url);
  4.                 $xpath = new DOMXpath($dom);
  5.                 $elements = $xpath->query("//*[@container]");
  6.                
  7.                 if (!is_null($elements)) {
  8.                           foreach ($elements as $element) {
  9.                                 echo "<br/>[". $element->nodeName. "]";
  10.  
  11.                                 $nodes = $element->childNodes;
  12.                                 foreach ($nodes as $node) {
  13.                                   echo $node->nodeValue. "\n";
  14.                                 }
  15.                         }
  16.                 }
  17.  


И он не одного элемента не нашел с этим айдишником, а он точно есть. Подсмотрел пример на php.net

Покажите пожалуйста правильный пример как заюзать XPath/
(Добавление)
Тупёж к добру не приводит. ) разобрался с этим.
 
 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