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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
UA.ProG
Отправлено: 17 Мая, 2009 - 12:23:56
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


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

[+]


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   $content = file_get_contents('http://www.***.ru/');
  3.   preg_match_all('%<td class="contentheading1">()<\/a></td>%is',$content,$tmp);
  4.   print_r($tmp);
  5. ?>


Отредактировано администратором: Champion, 17 Мая, 2009 - 12:29:55
Код обрамляйте тэгами. И не надо рекламировать сайты эротического содержания)


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
Champion Супермодератор
Отправлено: 17 Мая, 2009 - 12:31:32
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Ну и в чем проблема-то? Чего получить надо? В скобках, кстати чего - пустота?
 
 Top
UA.ProG
Отправлено: 17 Мая, 2009 - 15:12:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


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

[+]


получить надо имя девушки которая отображена на том сайте.
что () что (.+?) тоже самое возвратит все что находится перед и после


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
Champion Супермодератор
Отправлено: 17 Мая, 2009 - 16:05:49
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




CODE (text):
скопировать код в буфер обмена
  1. /\<td class=.contentheading1.\>\<a[^>]+\>([^<]+)\<a\>/
 
 Top
UA.ProG
Отправлено: 17 Мая, 2009 - 19:58:48
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


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

[+]


Champion пишет:
CODE (text):
скопировать код в буфер обмена
  1. /\<td class=.contentheading1.\>\<a[^>]+\>([^<]+)\<a\>/


Array ( [0] => Array ( ) [1] => Array ( ) )

не работает


-----еще есть регулярка----

Текст:

<div class="articleBody">

<div class="imgBox">
<a href="/images/news/ready/1/1/7/8/117868.jpg" onclick="return Chrome.Images.viewPic('/image/index/name/imagenews/id/117868');" ><img src="/images/news/small/1/1/7/8/117868.jpg" width="140" height="79" alt="Фото: РИА Новости" title="Фото: РИА Новости" border="1px" /></a>
</div>
Рабочие российского завода Ford в городе Всеволожск Ленинградской области 15 мая выйдут на митинг против планируемого с июня этого года введения на предприятии сокращенной рабочей недели, сообщил РИА Новости председатель профорганизации ЗАО "Форд Мотор Компани" Алексей Этманов.<br />
<br />
Ситуация на заводе обострилась после того, как в конце марта администрация ознакомила рабочих с приказом о переходе с 8 июня по 5 октября на четырехдневную рабочую неделю. Рабочие считают, что это приведет к 20-процентному сокращению их заработной платы, которая сейчас в среднем составляет около 27 тысяч рублей.<br />
<br />
"В пятницу мы проведем митинг против четырехдневной рабочей недели. Акция согласована, в ней примут участие до 300 человек", - сказал Этманов. </div>
<!-- end of article -->

<div class="clrflt">


Надо извлечь из него все что находится между </div> и </div>

Пожалуйста давайте только проверенные регулярки на практике


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
Champion Супермодератор
Отправлено: 17 Мая, 2009 - 20:16:20
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




UA.ProG пишет:
не работает
попробуй слеш перед > в квадратных скобках поставить. $content, кстати, не пустой?

Извлечь между <div> уже делали. И не раз. Поищи. Таоке наверное даже в примерах в мануале есть.
 
 Top
UA.ProG
Отправлено: 17 Мая, 2009 - 20:47:44
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Июль 2008  
Откуда: Николаев,Украина


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

[+]


Можешь приести пример?
Контент не пустой.
(Добавление)
~</div>(.*?)</div>~i

Делаю так ничего не получается

\ - ставить только когда разделителем явлется \ поєтому прозьба не писать за єто


-----
--------------MoZG--------------
---------Google спасёт мир------
 
 Top
vitaliy_mad
Отправлено: 17 Мая, 2009 - 21:54:39
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


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




CODE (text):
скопировать код в буфер обмена
  1. preg_match_all("/<\/div>(.*?)<\/div>/is",$content,$match);
 
 Top
chaynyk
Отправлено: 17 Мая, 2009 - 23:19:12
Post Id



Гость


Покинул форум
Сообщений всего: 118
Дата рег-ции: Сент. 2007  
Откуда: MOSCOW


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




vitaliy_mad пишет:
CODE (text):
скопировать код в буфер обмена
  1. preg_match_all("/<\/div>(.*?)<\/div>/is",$content,$match);

Вот так попробуй Радость
PHP:
скопировать код в буфер обмена
  1. $info='<!-- end of article';
  2. preg_match(/<(div).*?(class)\=\"(imgBox)(\n|.)*?<\!\-\-\s(end)\s(of)\s(article)/i,$content, machindex) ;
  3. $content1=machindex[0];
  4. preg_match(/<(a)\s(href)\=\".*?\"/i,$content1, machimeg) ;
  5. $imeg=machimeg[0];
  6. $imeg=$domen.$imeg ;
  7. $content1=str_replace($info,'',$wtitle);
  8. $conectinfo=strip_tags($content1);
  9. echo='<p><b>Фото</b></p>'.$imeg.'<br>';
  10. echo='<p>Текст:<br>'.$imeg.'</p>';

(Отредактировано автором: 17 Мая, 2009 - 23:20:08)



-----
Чайник в PHP и SEO,http://fleshky[dot]ru
 
 Top
разум
Отправлено: 01 Июня, 2009 - 15:53:39
Post Id


Новичок


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


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




Господа, нуждаюсь в помощи. Уже не первый час бьюсь, толку 0.
Есть страница, получаемая curl'ом
в странице повторяется такой код
Цитата:
<td class="row1"><a class="gen" href="tracker.php?f=521">Животный и растительный мир</a></td>
<td class="row4 med tLeft">
<a class="genmed" href="./viewtopic.php?t=310455"><b>Шершни из ада / Hornets From Hell [2002, SatRip]</b></a>
</td>
<td class="row1"><a class="med" href="tracker.php?pid=9231">oia</a></td>
<td class="row4 med nowrap"><a class="med dLink" href="./download.php?id=260209">[<span class="dlSp"> </span><span class="bold" onclick="this.className='normal'">DL</span><span class="dlSp"> </span>]</a></td>
<td class="row4 small nowrap">729&nbsp;MB</td>
<td class="row4 seedmed" title=" Last seen:
Never"><b>0</b></td>
<td class="row4 leechmed" title="Личеры"><b>0</b></td>
<td class="row4 small" title="Ответов: 0">0</td>
<td class="row4 small nowrap" style="padding: 1px 3px 2px;" title="Добавлен">
<p>10:19</p>
<p>31-Май-09</p>
</td>

Жирным выделены те значения, которые надо выцепить. В статике (каждая строка отдельно) значение получить удается, а вот при парсинге целой страницы - нет. Буду рад помощи.
 
 Top
Champion Супермодератор
Отправлено: 01 Июня, 2009 - 16:34:52
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




разум пишет:
(каждая строка отдельно) значение получить удается, а вот при парсинге целой страницы - нет.
флаг m - многострочный поиск, флаг s чтобы перевод строки тоже относился к любым символам
 
 Top
разум
Отправлено: 03 Июня, 2009 - 08:00:11
Post Id


Новичок


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


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




Тут более менее разобрался.
Парсинг такой строки
Цитата:
<a class="genmed" href="./viewtopic.php?t=310455"><b>Шершни из ада / Hornets From Hell [2002, SatRip]</b></a>
идет через
CODE (text):
скопировать код в буфер обмена
  1. preg_match_all('/\<a[^\>]+href=([\'"]).\/viewtopic\.php\?t=(\d+)\\1[^\>]*><b>([^\<]+)\<\/b\>\<\/a\>/is', $page, $out2, PREG_SET_ORDER);

Но в некоторых названиях есть одиночный тег <wbr>:
Цитата:
<a class="genmed" href="./viewtopic.php?t=311534"><b>НЕДЕЛЯ в НБА с В.ГОМЕЛЬСКИМ<wbr> на НТВ+ [26.05.2009, Баскетбол , TVRip] [2009, TVRip]</b></a>

Как сделать так, чтобы он игнорировался?
 
 Top
Champion Супермодератор
Отправлено: 03 Июня, 2009 - 08:33:53
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




брать любой символ не до '<' а именно до '</a>'
 
 Top
разум
Отправлено: 03 Июня, 2009 - 09:03:18
Post Id


Новичок


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


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




Любые символы до </a> - это так: ([^\<\/a\>]+)?

Еще встала проблема, если название содержит &nbsp; то оно не выводится
Цитата:
<a class="genmed" href="./viewtopic.php?t=956"><img src="images/tor_gold.gif" width="16" height="15" title="Золото" />&nbsp;<b>Люди Икс: Начало. Росомаха / X-Men Origins: Wolverine (Гэвин Худ) [2009 г., фантастика, боевик, триллер, фэнтези, DVDRip]</b></a>

(Отредактировано автором: 03 Июня, 2009 - 09:30:40)

 
 Top
Champion Супермодератор
Отправлено: 03 Июня, 2009 - 13:56:17
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




разум пишет:
Любые символы до </a> - это так: ([^\<\/a\>]+)?
нет, не так. Первую регулярку сам писал?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB