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 :: Парсинг в массив из <table>

 PHP.SU

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


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

> Без описания
xmax
Отправлено: 28 Мая, 2015 - 21:39:20
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2014  


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




Уважаемые пользователи. Прошу помочь.
Следующая ситуация:
Имеется на сайте таблица. Ее парсинг проходит на отлично.
В таблице имеются строки с некоторыми данными.
Наприме имеется ссылка вида:
CODE (html):
скопировать код в буфер обмена
  1. <a href='/profile.php?id=USERID' class='user'>USERNAME</a>

Как мне обработать эту полученную страницу, чтобы извлечь всех пользователей(порядка 20-40 в зависимости от времени).
с помощью:
PHP:
скопировать код в буфер обмена
  1.  
  2. preg_match_all("/href\='/profile.php\?id\=(.*)'/p", $statpage, $res);
  3.  

не получается. Ругается так:
Цитата:
Warning: preg_match_all(): Unknown modifier 'p' in /

Стоит preg_quote($statpage), но все равно ругается на $statpage

Может есть какой-то другой способ?
И как правильнее с массивом поступать?

Спасибо.
 
 Top
DelphinPRO
Отправлено: 28 Мая, 2015 - 23:24:22
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. preg_match_all("~href\='/profile.php\?id\=([^']*)'~p", $statpage, $res);

(Добавление)
в вашем случае регулярка воспринимается примерно так

Потому что первый символ в регулярке - ограничительный, и встретив второй такой, остальные, следующие за ним, будут считаться модификаторми, а не частью выражения.
Можно сменить ограничители на такие, которые не встречаются в регулярном выражении, либо экранировать ограничитель внутри выражения.
(Добавление)
кстати, а что за модификатор p вы поставили? Я кажется не знаю о таком. Его нужно убрать.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
xmax
Отправлено: 29 Мая, 2015 - 00:35:18
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2014  


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




DelphinPRO пишет:
PHP:
скопировать код в буфер обмена
  1. preg_match_all("~href\='/profile.php\?id\=([^']*)'~p", $statpage, $res);

(Добавление)
в вашем случае регулярка воспринимается примерно так

Потому что первый символ в регулярке - ограничительный, и встретив второй такой, остальные, следующие за ним, будут считаться модификаторми, а не частью выражения.
Можно сменить ограничители на такие, которые не встречаются в регулярном выражении, либо экранировать ограничитель внутри выражения.
(Добавление)
кстати, а что за модификатор p вы поставили? Я кажется не знаю о таком. Его нужно убрать.

Спасибо, сдвинулось вроде дело и пошел массив. Сейчас разгребу его.
p было случайно вставлено/оставлено от более полной строчки. Но оно не влияло.
(Добавление)
Еще вопрос, как делать что бы он USERID в массив добавлял? Сейчас получается на выходе пустой массив =(
 
 Top
GoDr
Отправлено: 29 Мая, 2015 - 08:35:49
Post Id



Посетитель


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


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




xmax пишет:
p было случайно вставлено/оставлено от более полной строчки. Но оно не влияло.
что значит не влияло??? Тебе же явно сказали про это
Цитата:
Warning: preg_match_all(): Unknown modifier 'p' in /


xmax пишет:
Еще вопрос, как делать что бы он USERID в массив добавлял? Сейчас получается на выходе пустой массив =(
Если получается пустой массив, значит регулярка не работает! Ты бы дал с пяток строк для тренировки. Вроде тебе нужна помощь, а сам жадничаешь с вводными данными


-----
Система управления веб-содержимым Lotos CMS
 
 Top
xmax
Отправлено: 29 Мая, 2015 - 09:33:59
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2014  


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




GoDr пишет:
xmax пишет:
p было случайно вставлено/оставлено от более полной строчки. Но оно не влияло.
что значит не влияло??? Тебе же явно сказали про это
Цитата:
Warning: preg_match_all(): Unknown modifier 'p' in /


xmax пишет:
Еще вопрос, как делать что бы он USERID в массив добавлял? Сейчас получается на выходе пустой массив =(
Если получается пустой массив, значит регулярка не работает! Ты бы дал с пяток строк для тренировки. Вроде тебе нужна помощь, а сам жадничаешь с вводными данными

PHP:
скопировать код в буфер обмена
  1. <tr class\='row_0'\>
  2.         <td > </td\>
  3.         <td ><a href\='/profile\.php\?id\=1328' class\='user ' \>user1</a\> </td\>
  4.         <td >100</td\>
  5.         <td > </td\>
  6. </tr\>
  7. <tr class\='row_0'\>
  8.         <td > </td\>
  9.         <td ><a href\='/profile\.php\?id\=183' class\='user ' \>user2</a\> </td\>
  10.         <td >100</td\>
  11.         <td > </td\>
  12. </tr\>
  13. <tr class\='row_0'\>
  14.         <td > </td\>
  15.         <td ><a href\='/profile\.php\?id\=4702' class\='user ' \>user3</a\> </td\>
  16.         <td >1200</td\>
  17.         <td > </td\>
  18. </tr\>
  19. <tr class\='row_0'\>
  20.         <td > </td\>
  21.         <td ><a href\='/profile\.php\?id\=9377' class\='user ' \>user4</a\> </td\>
  22.         <td >67</td\>
  23.         <td > </td\>
  24. </tr\>

Это после прохождения через preg_quote()
 
 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